-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathdocker-compose.yml
113 lines (106 loc) · 2.3 KB
/
docker-compose.yml
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
version: "3.9"
x-environment: &base-environment
DEBUG: "false"
CELERY_BROKER: amqp://reddit:reddit@rabbitmq:5672/
CELERY_BACKEND: redis://:reddit@localhost:6379/
DATABASE_URL: postgresql+asyncpg://reddit:reddit@postgres:5432/reddit/
MAIL_HOST: 127.0.0.1
MAIL_PORT: 25
MAIL_USERNAME:
MAIL_PASSWORD:
MAIL_SENDER:
services:
nginx:
image: nginx:1.21-alpine
container_name: reddit-nginx
restart: always
networks:
- reddit-proxy
ports:
- 80:80
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
app:
build: "."
image: reddit-app
container_name: reddit-app
restart: always
command: poetry run uvicorn reddit:app --host=0.0.0.0 --port=8080
environment: *base-environment
networks:
- reddit-main
- reddit-proxy
volumes:
- .:/app
depends_on:
- postgres
celery:
image: reddit-app
container_name: reddit-celery
restart: always
command: poetry run celery -A reddit.tasks worker
environment: *base-environment
networks:
- reddit-main
volumes:
- .:/app
depends_on:
- rabbitmq
- redis
- app
postgres:
image: postgres:14-alpine
container_name: reddit-postgres
restart: always
environment:
POSTGRES_USER: reddit
POSTGRES_PASSWORD: reddit
POSTGRES_DB: reddit
networks:
- reddit-main
ports:
- 5432:5432
volumes:
- ./data/postgres:/var/lib/postgresql/data
redis:
image: redis:6.2-alpine
container_name: reddit-redis
restart: always
environment:
REDIS_PASSWORD: reddit
networks:
- reddit-main
ports:
- 6379:6379
volumes:
- ./data/redis:/data
healthcheck:
test: redis-cli ping
interval: 15s
retries: 5
timeout: 5s
rabbitmq:
image: rabbitmq:3.9-alpine
container_name: reddit-rabbitmq
restart: always
environment:
RABBITMQ_DEFAULT_USER: reddit
RABBITMQ_DEFAULT_PASS: reddit
networks:
- reddit-main
ports:
- 5672:5672
volumes:
- ./data/rabbitmq:/data
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 15s
retries: 5
timeout: 5s
networks:
reddit-main:
driver: bridge
reddit-proxy:
driver: bridge