-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
155 lines (148 loc) · 4.36 KB
/
Copy pathdocker-compose.yml
File metadata and controls
155 lines (148 loc) · 4.36 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
version: '3.8'
services:
mysql:
image: mysql:8.0.36
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${SQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${SQL_DB_NAME}
MYSQL_USER: remote_user
MYSQL_PASSWORD: ${SQL_PASSWORD}
volumes:
- db_volume:/var/lib/mysql
- ./init:/docker-entrypoint-initdb.d/:ro
command: --default-authentication-plugin=mysql_native_password
networks:
- internal
rabbitmq:
image: "rabbitmq:3"
restart: unless-stopped
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: ${CELERY_BROKER_PASSWORD}
RABBITMQ_DEFAULT_VHOST: "vhost"
CELERY_BROKER_URL: "pyamqp://admin:${CELERY_BROKER_PASSWORD}@rabbitmq/vhost"
volumes:
- rabbitmq_volume:/var/lib/rabbitmq
depends_on:
- mysql
networks:
- internal
web:
build:
network: host
context: .
dockerfile: Dockerfile
restart: unless-stopped
environment:
FLASK_APP: uwsgi.py
FLASK_ENV: production
FLASK_SECRET_KEY: ${FLASK_SECRET_KEY}
FLASK_DEBUG: False
SQL_HOSTNAME: mysql
SQL_USERNAME: remote_user
SQL_PASSWORD: ${SQL_PASSWORD}
SQL_DB_NAME: ${SQL_DB_NAME}
CELERY_BROKER_URL: "pyamqp://admin:${CELERY_BROKER_PASSWORD}@rabbitmq/vhost"
CRYPT_KEY: ${CRYPT_KEY}
CLOUD_NAME: ${CLOUD_NAME}
CLOUDINARY_API_KEY: ${CLOUDINARY_API_KEY}
CLOUDINARY_SECRET: ${CLOUDINARY_SECRET}
MAIL_USERNAME: ${MAIL_USERNAME}
MAIL_PASSWORD: ${MAIL_PASSWORD}
CELERY_RESULT_BACKEND: ${CELERY_RESULT_BACKEND}
MAINTENANCE_MODE: ${MAINTENANCE_MODE} # Added for maintenance mode
volumes:
- ./app:/newutil/app
- ./app/static:/newutil/app/static
- ./config.py:/newutil/config.py
- ./uwsgi.py:/newutil/uwsgi.py
- user_files_volume:/newutil/app/user_files/
depends_on:
- mysql
- rabbitmq
networks:
- appnet
- internal
celery:
build:
context: .
network: host
command: celery -A uwsgi.celery worker --loglevel=info --concurrency=2 --pool=eventlet
restart: unless-stopped
environment:
FLASK_APP: uwsgi.py
FLASK_ENV: production
FLASK_SECRET_KEY: ${FLASK_SECRET_KEY}
FLASK_DEBUG: False
SQL_HOSTNAME: mysql
SQL_USERNAME: remote_user
SQL_PASSWORD: ${SQL_PASSWORD}
SQL_DB_NAME: ${SQL_DB_NAME}
CELERY_BROKER_URL: "pyamqp://admin:${CELERY_BROKER_PASSWORD}@rabbitmq/vhost"
CRYPT_KEY: ${CRYPT_KEY}
CLOUD_NAME: ${CLOUD_NAME}
CLOUDINARY_API_KEY: ${CLOUDINARY_API_KEY}
CLOUDINARY_SECRET: ${CLOUDINARY_SECRET}
MAIL_USERNAME: ${MAIL_USERNAME}
MAIL_PASSWORD: ${MAIL_PASSWORD}
CELERY_RESULT_BACKEND: ${CELERY_RESULT_BACKEND}
volumes:
- ./app:/newutil/app
- ./app/static:/newutil/app/static
- ./config.py:/newutil/config.py
- ./uwsgi.py:/newutil/uwsgi.py
- user_files_volume:/newutil/app/user_files/
depends_on:
- web
- rabbitmq
- mysql
networks:
- internal
celerybeat:
build:
network: host
context: .
command: celery -A uwsgi.celery beat --loglevel=info -s /newutil/celerybeat-schedule/celerybeat-schedule
restart: unless-stopped
environment:
FLASK_APP: uwsgi.py
FLASK_ENV: production
FLASK_SECRET_KEY: ${FLASK_SECRET_KEY}
FLASK_DEBUG: False
SQL_HOSTNAME: mysql
SQL_USERNAME: remote_user
SQL_PASSWORD: ${SQL_PASSWORD}
SQL_DB_NAME: ${SQL_DB_NAME}
CELERY_BROKER_URL: "pyamqp://admin:${CELERY_BROKER_PASSWORD}@rabbitmq/vhost"
CRYPT_KEY: ${CRYPT_KEY}
CLOUD_NAME: ${CLOUD_NAME}
CLOUDINARY_API_KEY: ${CLOUDINARY_API_KEY}
CLOUDINARY_SECRET: ${CLOUDINARY_SECRET}
MAIL_USERNAME: ${MAIL_USERNAME}
MAIL_PASSWORD: ${MAIL_PASSWORD}
CELERY_RESULT_BACKEND: ${CELERY_RESULT_BACKEND}
volumes:
- ./app:/newutil/app
- ./app/static:/newutil/app/static
- ./config.py:/newutil/config.py
- ./uwsgi.py:/newutil/uwsgi.py
- user_files_volume:/newutil/app/user_files/
- celerybeat-schedule:/newutil/celerybeat-schedule
depends_on:
- web
- rabbitmq
- mysql
- celery
networks:
- internal
volumes:
db_volume:
rabbitmq_volume:
user_files_volume:
celerybeat-schedule:
networks:
internal:
driver: "bridge"
appnet:
external: true