-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
129 lines (125 loc) · 4.17 KB
/
docker-compose.yml
File metadata and controls
129 lines (125 loc) · 4.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
services:
api:
build:
context: .
dockerfile: Dockerfile
container_name: fastapi_clean_ddd_api
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
environment:
APP_ENV: development
SECRET_KEY: 123123
DATABASE_URL: postgresql+asyncpg://postgres:123456@postgres:5432/database
RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672/
RABBITMQ_HOST: rabbitmq
RABBITMQ_PORT: 5672
RABBITMQ_USER: guest
RABBITMQ_PASSWORD: guest
RABBITMQ_EXCHANGE: app.events
RABBITMQ_DLX_EXCHANGE: app.events.dlx
USER_CREATED_QUEUE: user.created.queue
USER_CREATED_ROUTING_KEY: user.created.v1
USER_CREATED_DLQ: user.created.dlq
USER_CREATED_DLQ_ROUTING_KEY: user.created.dlq.v1
CART_CHECKOUT_REQUESTED_QUEUE: cart.checkout.requested.queue
CART_CHECKOUT_REQUESTED_ROUTING_KEY: cart.checkout.requested.v1
CART_CHECKOUT_REQUESTED_DLQ: cart.checkout.requested.dlq
CART_CHECKOUT_REQUESTED_DLQ_ROUTING_KEY: cart.checkout.requested.dlq.v1
ORDER_CREATED_QUEUE: order.created.queue
ORDER_CREATED_ROUTING_KEY: order.created.v1
ORDER_CREATED_DLQ: order.created.dlq
ORDER_CREATED_DLQ_ROUTING_KEY: order.created.dlq.v1
ORDER_COMPLETED_ROUTING_KEY: order.completed.v1
OUTBOX_BATCH_SIZE: 100
OUTBOX_PUBLISH_INTERVAL_SECONDS: 2
OUTBOX_MAX_ATTEMPTS: 10
MESSAGE_BUS_PROVIDER: rabbitmq
ports:
- "8000:8000"
command: >
sh -c "uvicorn main:app --host 0.0.0.0 --port 8000 --reload"
worker:
build:
context: .
dockerfile: Dockerfile
container_name: fastapi_clean_ddd_worker_service
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
environment:
APP_ENV: development
SECRET_KEY: 123123
DATABASE_URL: postgresql+asyncpg://postgres:123456@postgres:5432/database
RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672/
RABBITMQ_HOST: rabbitmq
RABBITMQ_PORT: 5672
RABBITMQ_USER: guest
RABBITMQ_PASSWORD: guest
RABBITMQ_EXCHANGE: app.events
RABBITMQ_DLX_EXCHANGE: app.events.dlx
USER_CREATED_QUEUE: user.created.queue
USER_CREATED_ROUTING_KEY: user.created.v1
USER_CREATED_DLQ: user.created.dlq
USER_CREATED_DLQ_ROUTING_KEY: user.created.dlq.v1
CART_CHECKOUT_REQUESTED_QUEUE: cart.checkout.requested.queue
CART_CHECKOUT_REQUESTED_ROUTING_KEY: cart.checkout.requested.v1
CART_CHECKOUT_REQUESTED_DLQ: cart.checkout.requested.dlq
CART_CHECKOUT_REQUESTED_DLQ_ROUTING_KEY: cart.checkout.requested.dlq.v1
ORDER_CREATED_QUEUE: order.created.queue
ORDER_CREATED_ROUTING_KEY: order.created.v1
ORDER_CREATED_DLQ: order.created.dlq
ORDER_CREATED_DLQ_ROUTING_KEY: order.created.dlq.v1
ORDER_COMPLETED_ROUTING_KEY: order.completed.v1
OUTBOX_BATCH_SIZE: 100
OUTBOX_PUBLISH_INTERVAL_SECONDS: 2
OUTBOX_MAX_ATTEMPTS: 10
WORKER_RESTART_DELAY_SECONDS: 5
MESSAGE_BUS_PROVIDER: rabbitmq
command: >
python -m src.infrastructure.workers.worker_service
postgres:
image: postgres:16-alpine
container_name: fastapi_clean_ddd_postgres
restart: unless-stopped
environment:
POSTGRES_DB: database
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "123456"
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d database"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
rabbitmq:
image: rabbitmq:3-management-alpine
container_name: fastapi_clean_ddd_rabbitmq
restart: unless-stopped
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- "5672:5672"
- "15672:15672"
volumes:
- rabbitmq_data:/var/lib/rabbitmq
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"]
interval: 15s
timeout: 10s
retries: 5
start_period: 20s
volumes:
postgres_data:
rabbitmq_data: