Skip to content

Commit 1e855db

Browse files
authored
Optimize docker deploy settings and scripts (#486)
1 parent e0606d1 commit 1e855db

File tree

7 files changed

+108
-133
lines changed

7 files changed

+108
-133
lines changed

backend/backend.dockerfile

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,23 @@ RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debi
1010
&& sed -i 's|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list.d/debian.sources
1111

1212
RUN apt-get update \
13-
&& apt-get install -y --no-install-recommends gcc python3-dev \
13+
&& apt-get install -y --no-install-recommends gcc python3-dev supervisor \
1414
&& rm -rf /var/lib/apt/lists/* \
1515
# 某些包可能存在同步不及时导致安装失败的情况,可更改为官方源:https://pypi.org/simple
1616
&& pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple \
1717
&& pip install -r backend/requirements.txt -i https://mirrors.aliyun.com/pypi/simple \
18-
&& pip install gunicorn aio_pika supervisor wait-for-it -i https://mirrors.aliyun.com/pypi/simple
18+
&& pip install gunicorn aio_pika wait-for-it -i https://mirrors.aliyun.com/pypi/simple
1919

2020
ENV TZ="Asia/Shanghai"
2121

22-
RUN mkdir -p /var/log/fastapi_server
22+
RUN mkdir -p /var/log/fastapi_server \
23+
&& mkdir -p /var/log/supervisor \
24+
&& mkdir -p /etc/supervisor/conf.d
25+
26+
COPY deploy/backend/supervisor.conf /etc/supervisor/supervisord.conf
2327

2428
COPY deploy/backend/fastapi_server.conf /etc/supervisor/conf.d/
2529

2630
EXPOSE 8001
2731

28-
CMD ["uvicorn", "backend.main:app", "--host", "127.0.0.1", "--port", "8000"]
32+
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]

backend/celery.dockerfile

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,20 @@ RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debi
1010
&& sed -i 's|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list.d/debian.sources
1111

1212
RUN apt-get update \
13-
&& apt-get install -y --no-install-recommends gcc python3-dev \
13+
&& apt-get install -y --no-install-recommends gcc python3-dev supervisor \
1414
&& rm -rf /var/lib/apt/lists/* \
1515
# 某些包可能存在同步不及时导致安装失败的情况,可更改为官方源:https://pypi.org/simple
1616
&& pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple \
1717
&& pip install -r backend/requirements.txt -i https://mirrors.aliyun.com/pypi/simple \
18-
&& pip install gunicorn aio_pika supervisor wait-for-it -i https://mirrors.aliyun.com/pypi/simple
18+
&& pip install aio_pika wait-for-it -i https://mirrors.aliyun.com/pypi/simple
1919

2020
ENV TZ="Asia/Shanghai"
2121

22-
RUN mkdir -p /var/log/celery
22+
RUN mkdir -p /var/log/celery \
23+
&& mkdir -p /var/log/supervisor \
24+
&& mkdir -p /etc/supervisor/conf.d
25+
26+
COPY deploy/backend/supervisor.conf /etc/supervisor/supervisord.conf
2327

2428
COPY deploy/backend/celery.conf /etc/supervisor/conf.d/
2529

backend/pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ lint = [
6262
server = [
6363
"gunicorn==21.2.0",
6464
"aio_pika==9.4.3",
65-
"supervisor>=4.2.5",
6665
"wait-for-it>=2.2.2",
6766
]
6867

backend/uv.lock

Lines changed: 0 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

deploy/backend/celery.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ stdout_logfile=/var/log/celery/fba_celery_beat.log
2020

2121
[program:celery_flower]
2222
directory=/fba/backend
23-
command=/usr/local/bin/celery -A app.task.celery flower --port=8555 --basic-auth=admin:123456
23+
command=/usr/local/bin/celery -A app.task.celery flower --port=8555 --url-prefix=flower --basic-auth=admin:123456
2424
user=root
2525
autostart=true
2626
autorestart=true

deploy/backend/docker-compose/docker-compose.yml

Lines changed: 58 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,3 @@
1-
networks:
2-
fba_network:
3-
name: fba_network
4-
driver: bridge
5-
ipam:
6-
driver: default
7-
config:
8-
- subnet: 172.10.10.0/24
9-
10-
volumes:
11-
fba_mysql:
12-
name: fba_mysql
13-
fba_redis:
14-
name: fba_redis
15-
fba_static:
16-
name: fba_static
17-
fba_rabbitmq:
18-
name: fba_rabbitmq
19-
201
services:
212
fba_server:
223
build:
@@ -38,8 +19,7 @@ services:
3819
- -c
3920
- |
4021
wait-for-it -s fba_mysql:3306 -s fba_redis:6379 -t 300
41-
mkdir -p /var/log/supervisor/
42-
supervisord -c /fba/deploy/backend/supervisor.conf
22+
supervisord -c /etc/supervisor/supervisord.conf
4323
supervisorctl restart
4424
4525
fba_mysql:
@@ -62,20 +42,20 @@ services:
6242
--collation-server=utf8mb4_general_ci
6343
--lower_case_table_names=1
6444

65-
# fba_postgres:
66-
# image: postgres:16
67-
# ports:
68-
# - "${DOCKER_POSTGRES_MAP_PORT:-5432}:5432"
69-
# container_name: fba_postgres
70-
# restart: always
71-
# environment:
72-
# POSTGRES_DB: fba
73-
# POSTGRES_PASSWORD: 123456
74-
# TZ: Asia/Shanghai
75-
# volumes:
76-
# - fba_postgres:/var/lib/postgresql/data
77-
# networks:
78-
# - fba_network
45+
# fba_postgres:
46+
# image: postgres:16
47+
# ports:
48+
# - "${DOCKER_POSTGRES_MAP_PORT:-5432}:5432"
49+
# container_name: fba_postgres
50+
# restart: always
51+
# environment:
52+
# POSTGRES_DB: fba
53+
# POSTGRES_PASSWORD: 123456
54+
# TZ: Asia/Shanghai
55+
# volumes:
56+
# - fba_postgres:/var/lib/postgresql/data
57+
# networks:
58+
# - fba_network
7959

8060
fba_redis:
8161
image: redis:6.2.7
@@ -99,33 +79,33 @@ services:
9979
depends_on:
10080
- fba_server
10181
volumes:
102-
- ../nginx.conf:/etc/nginx/nginx.conf:ro
82+
- ../nginx.conf:/etc/nginx/conf.d/default.conf:ro
10383
- fba_static:/www/fba_server/backend/static
10484
networks:
10585
- fba_network
10686

107-
# fba_ui:
108-
# build:
109-
# context: /root/fastapi_best_architecture_ui
110-
# dockerfile: Dockerfile
111-
# image: fba_ui:latest
112-
# ports:
113-
# - "80:80"
114-
# - "443:443"
115-
# container_name: fba_ui
116-
# restart: always
117-
# depends_on:
118-
# - fba_server
119-
# command:
120-
# - nginx
121-
# - -g
122-
# - daemon off;
123-
# volumes:
124-
# # - local_ssl_pem_path:/etc/ssl/xxx.pem
125-
# # - local_ssl_key_path:/etc/ssl/xxx.key
126-
# - fba_static:/www/fba_server/backend/static
127-
# networks:
128-
# - fba_network
87+
# fba_ui:
88+
# build:
89+
# context: /root/fastapi_best_architecture_ui
90+
# dockerfile: Dockerfile
91+
# image: fba_ui:latest
92+
# ports:
93+
# - "80:80"
94+
# - "443:443"
95+
# container_name: fba_ui
96+
# restart: always
97+
# depends_on:
98+
# - fba_server
99+
# command:
100+
# - nginx
101+
# - -g
102+
# - daemon off;
103+
# volumes:
104+
# # - local_ssl_pem_path:/etc/ssl/xxx.pem
105+
# # - local_ssl_key_path:/etc/ssl/xxx.key
106+
# - fba_static:/www/fba_server/backend/static
107+
# networks:
108+
# - fba_network
129109

130110
fba_rabbitmq:
131111
hostname: fba_rabbitmq
@@ -161,6 +141,24 @@ services:
161141
- -c
162142
- |
163143
wait-for-it -s fba_rabbitmq:5672 -t 300
164-
mkdir -p /var/log/supervisor/
165-
supervisord -c /fba/deploy/backend/supervisor.conf
144+
supervisord -c /etc/supervisor/supervisord.conf
166145
supervisorctl restart
146+
147+
networks:
148+
fba_network:
149+
name: fba_network
150+
driver: bridge
151+
ipam:
152+
driver: default
153+
config:
154+
- subnet: 172.10.10.0/24
155+
156+
volumes:
157+
fba_mysql:
158+
name: fba_mysql
159+
fba_redis:
160+
name: fba_redis
161+
fba_static:
162+
name: fba_static
163+
fba_rabbitmq:
164+
name: fba_rabbitmq

deploy/backend/nginx.conf

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,10 @@
1-
# For more information on configuration, see:
2-
# * Official English Documentation: http://nginx.org/en/docs/
3-
# * Official Russian Documentation: http://nginx.org/ru/docs/
1+
server {
2+
listen 80 default_server;
3+
listen [::]:80 default_server;
4+
server_name 127.0.0.1;
45

5-
user nginx;
6-
worker_processes auto;
7-
error_log /var/log/nginx/error.log;
8-
pid /run/nginx.pid;
6+
root /fba;
97

10-
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
11-
include /usr/share/nginx/modules/*.conf;
12-
13-
events {
14-
worker_connections 1024;
15-
}
16-
17-
http {
18-
19-
include /etc/nginx/mime.types;
20-
default_type application/octet-stream;
21-
22-
sendfile on;
238
client_max_body_size 5M;
249
client_body_buffer_size 5M;
2510

@@ -30,29 +15,37 @@ http {
3015

3116
keepalive_timeout 300;
3217

33-
server {
34-
listen 80 default_server;
35-
listen [::]:80 default_server;
36-
server_name 127.0.0.1;
18+
location / {
19+
proxy_pass http://fba_server:8001;
3720

38-
root /fba;
39-
40-
client_max_body_size 10m; # 最大上传文件
41-
42-
location / {
43-
proxy_pass http://fba_server:8001;
21+
proxy_set_header Host $http_host;
22+
proxy_set_header X-Real-IP $remote_addr;
23+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
24+
proxy_set_header X-Forwarded-Proto $scheme;
25+
proxy_connect_timeout 300s;
26+
proxy_send_timeout 300s;
27+
proxy_read_timeout 300s;
28+
}
4429

45-
proxy_set_header Host $http_host;
46-
proxy_set_header X-Real-IP $remote_addr;
47-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
48-
proxy_set_header X-Forwarded-Proto $scheme;
49-
proxy_connect_timeout 300s;
50-
proxy_send_timeout 300s;
51-
proxy_read_timeout 300s;
52-
}
30+
location /flower/ {
31+
proxy_pass http://fba_server:8555;
32+
33+
proxy_set_header Host $http_host;
34+
proxy_set_header X-Real-IP $remote_addr;
35+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
36+
proxy_set_header X-Forwarded-Proto $scheme;
37+
proxy_connect_timeout 300s;
38+
proxy_send_timeout 300s;
39+
proxy_read_timeout 300s;
40+
proxy_redirect off;
41+
42+
# WebSocket 支持
43+
proxy_http_version 1.1;
44+
proxy_set_header Upgrade $http_upgrade;
45+
proxy_set_header Connection "upgrade";
46+
}
5347

54-
location /static/ {
55-
alias /www/fba_server/backend/static;
56-
}
48+
location /static {
49+
alias /www/fba_server/backend/static;
5750
}
5851
}

0 commit comments

Comments
 (0)