-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
104 lines (95 loc) · 2.89 KB
/
docker-compose.yml
File metadata and controls
104 lines (95 loc) · 2.89 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
services:
# --- SHARED INFRASTRUCTURE ---
database:
image: postgres:16-alpine
ports:
- "5434:5432" # Map [Host Port]:[Container Port]
environment:
POSTGRES_USER: symfony
POSTGRES_PASSWORD: password
POSTGRES_DB: main_db # Postgres creates ONE db on startup
volumes:
- db-data:/var/lib/postgresql/data
- ./docker/postgres/init-db.sql:/docker-entrypoint-initdb.d/init-db.sql:ro
messenger-hub:
image: rabbitmq:3-management-alpine
ports:
- "15672:15672" # UI for the reviewer to see messages
- "5672:5672" # Mapping this allows you to test connection from your host machine
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"]
interval: 5s
timeout: 5s
retries: 5
volumes:
- ./docker/rmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
cache:
image: redis:7-alpine
# --- MICROSERVICE: PRODUCTS ---
products-php:
build: .
volumes:
- ./service-products:/var/www/html
depends_on:
messenger-hub:
condition: service_healthy # Wait for RabbitMQ to be "Healthy"
products-web:
image: nginx:alpine
ports:
- "8081:80"
environment:
- PHP_UPSTREAM=products-php
volumes:
- ./service-products:/var/www/html
- ./docker/nginx/default.conf.template:/etc/nginx/templates/default.conf.template:ro
depends_on:
- products-php
# --- PRODUCTS WORKER ---
products-worker:
build:
context: ./service-products # Points to the actual PHP project folder
dockerfile: ../Dockerfile
volumes:
- ./service-products:/var/www/html
command: php bin/console messenger:consume orders_transport -vv
restart: on-failure
depends_on:
messenger-hub:
condition: service_healthy
environment:
MESSENGER_TRANSPORT_DSN: amqp://guest:guest@messenger-hub:5672/%2f/order
# --- MICROSERVICE: ORDERS ---
orders-php:
build: .
volumes:
- ./service-orders:/var/www/html
depends_on:
messenger-hub:
condition: service_healthy # Wait for RabbitMQ to be "Healthy"
orders-web:
image: nginx:alpine
ports:
- "8082:80"
environment:
- PHP_UPSTREAM=orders-php # MUST match the service name
volumes:
- ./service-orders:/var/www/html
- ./docker/nginx/default.conf.template:/etc/nginx/templates/default.conf.template:ro
depends_on:
- orders-php
# --- ORDERS WORKER ---
orders-worker:
build:
context: ./service-orders # Points to the actual PHP project folder
dockerfile: ../Dockerfile
volumes:
- ./service-orders:/var/www/html
command: php bin/console messenger:consume products_transport -vv
restart: on-failure
depends_on:
messenger-hub:
condition: service_healthy
environment:
MESSENGER_TRANSPORT_DSN: amqp://guest:guest@messenger-hub:5672/%2f/product
volumes:
db-data: