1+ services :
2+ fba_server :
3+ build :
4+ context : .
5+ dockerfile : Dockerfile
6+ image : fba_server:latest
7+ container_name : fba_server
8+ restart : always
9+ # 如果你是 postgres 用户,应将 fba_mysql 修改为 fba_postgres
10+ depends_on : # [!code warning:2]
11+ - fba_mysql
12+ - fba_redis
13+ - fba_celery
14+ volumes :
15+ - ./deploy/backend/docker-compose/.env.server:/fba/backend/.env
16+ - fba_static:/fba/backend/app/static
17+ networks :
18+ - fba_network
19+ # 如果你是 postgres 用户,应将 fba_mysql:3306 修改为 fba_postgres:5432
20+ command : # [!code warning:5]
21+ - bash
22+ - -c
23+ - |
24+ wait-for-it -s fba_mysql:3306 -s fba_redis:6379 -t 300
25+ mkdir -p /var/log/supervisor/
26+ supervisord -c /fba/deploy/backend/supervisor.conf
27+ supervisorctl restart fastapi_server
28+
29+ fba_mysql :
30+ image : mysql:8.0.41
31+ ports :
32+ - " ${DOCKER_MYSQL_MAP_PORT:-3306}:3306"
33+ container_name : fba_mysql
34+ restart : always
35+ environment :
36+ MYSQL_DATABASE : fba
37+ MYSQL_ROOT_PASSWORD : 123456
38+ TZ : Asia/Shanghai
39+ volumes :
40+ - fba_mysql:/var/lib/mysql
41+ networks :
42+ - fba_network
43+ command :
44+ --default-authentication-plugin=mysql_native_password
45+ --character-set-server=utf8mb4
46+ --collation-server=utf8mb4_general_ci
47+ --lower_case_table_names=1
48+
49+ # 如果你是 postgres 用户,应保留 fba_postgres 容器脚本并删除 fba_mysql 容器脚本
50+ # 否则,删除 fba_postgres 容器脚本
51+ fba_postgres : # [!code warning:14]
52+ image : postgres:16
53+ ports :
54+ - " ${DOCKER_MYSQL_MAP_PORT:-5432}:5432"
55+ container_name : fba_postgres
56+ restart : always
57+ environment :
58+ POSTGRES_DB : fba
59+ POSTGRES_PASSWORD : 123456
60+ TZ : Asia/Shanghai
61+ volumes :
62+ - fba_mysql:/var/lib/postgresql/data
63+ networks :
64+ - fba_network
65+
66+ fba_redis :
67+ image : redis
68+ ports :
69+ - " ${DOCKER_REDIS_MAP_PORT:-6379}:6379"
70+ container_name : fba_redis
71+ restart : always
72+ environment :
73+ - TZ=Asia/Shanghai
74+ volumes :
75+ - fba_redis:/usr/local/etc/redis
76+ networks :
77+ - fba_network
78+
79+ # 后端专用,如果使用此容器,意味着你只需部署后端 API 服务,不需要前端;
80+ # 这与下面的 fba_ui 容器冲突,如果你选择使用 fba_ui 容器
81+ # 你应该注释或删除 fba_nginx 容器脚本,并使用 fba_ui 容器
82+ fba_nginx : # [!code warning:13]
83+ image : nginx
84+ ports :
85+ - " 8000:80"
86+ container_name : fba_nginx
87+ restart : always
88+ depends_on :
89+ - fba_server
90+ volumes :
91+ - ./deploy/backend/nginx.conf:/etc/nginx/conf.d/default.conf:ro
92+ - fba_static:/www/fba_server/backend/static
93+ networks :
94+ - fba_network
95+
96+ # 如果服务器内存小于 4GB,CPU 小于四个内核
97+ # 建议进入 fba_ui 项目单独构建这个容器(参考下方前端部署教程)
98+ # 如果你不选择单独构建,务必在执行下面步骤前根据前端部署教程更新前端配置文件
99+ # 如果你选择单独构建,务必注释或删除此容器脚本
100+ fba_ui : # [!code warning:30]
101+ build :
102+ context : /root/fastapi_best_architecture_ui # 根据 Arco Desgin Vue 项目存放目录修改此路径
103+ dockerfile : Dockerfile
104+ image : fba_ui:latest
105+ ports :
106+ - " 80:80"
107+ - " 443:443"
108+ container_name : fba_ui
109+ restart : always
110+ depends_on :
111+ - fba_server
112+ command :
113+ - nginx
114+ - -g
115+ - daemon off;
116+ volumes :
117+ # nginx https conf
118+ # 通过 docker 进行部署时,需要打开此配置项并确保<挂载到容器内的证书文件路径>配置
119+ # 与 nginx conf 中的 ssl 证书文件路径配置一致,如果你直接将 ssl 证书文件 cp
120+ # 到了 docker 容器内,则无需挂载证书文件,直接将它们注释或删除即可
121+ # local_ssl_pem_path:你在服务器存放 ssl pem 证书文件的路径,自行修改
122+ # local_ssl_key_path: 你在服务器存放 ssl key 证书文件的路径,自行修改
123+ # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改
124+ # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改
125+ - local_ssl_pem_path:/etc/ssl/xxx.pem
126+ - local_ssl_key_path:/etc/ssl/xxx.key
127+ - fba_static:/www/fba_server/backend/static
128+ networks :
129+ - fba_network
130+
131+ fba_rabbitmq :
132+ hostname : fba_rabbitmq
133+ image : rabbitmq:3.13.7
134+ ports :
135+ - " 15672:15672"
136+ - " 5672:5672"
137+ container_name : fba_rabbitmq
138+ restart : always
139+ environment :
140+ - RABBITMQ_DEFAULT_USER=guest
141+ - RABBITMQ_DEFAULT_PASS=guest
142+ volumes :
143+ - fba_rabbitmq:/var/lib/rabbitmq
144+ networks :
145+ - fba_network
146+
147+ fba_celery :
148+ build :
149+ context : .
150+ dockerfile : Dockerfile
151+ args :
152+ - SERVER_TYPE=celery
153+ image : fba_celery:latest
154+ ports :
155+ - " 8555:8555"
156+ container_name : fba_celery
157+ restart : always
158+ depends_on :
159+ - fba_rabbitmq
160+ networks :
161+ - fba_network
162+ command :
163+ - bash
164+ - -c
165+ - |
166+ wait-for-it -s fba_rabbitmq:5672 -t 300
167+ mkdir -p /var/log/supervisor/
168+ supervisord -c /fba/deploy/backend/supervisor.conf
169+ supervisorctl restart celery_worker
170+ supervisorctl restart celery_beat
171+ supervisorctl restart celery_flower
172+
173+ networks :
174+ fba_network :
175+ name : fba_network
176+ driver : bridge
177+ ipam :
178+ driver : default
179+ config :
180+ - subnet : 172.10.10.0/24
181+
182+ volumes :
183+ # 如果你是 postgres 用户,应将 fba_mysql 修改为 fba_postgres
184+ fba_mysql : # [!code warning:2]
185+ name : fba_mysql
186+ fba_redis :
187+ name : fba_redis
188+ fba_static :
189+ name : fba_static
190+ fba_static_upload :
191+ name : fba_static_upload
192+ fba_rabbitmq :
193+ name : fba_rabbitmq
0 commit comments