From c25e447530f3caf18f4ea0d920ff0401d2241c23 Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Fri, 26 Sep 2025 13:18:34 +0800 Subject: [PATCH] Update docker and deployment script comments (#839) * Update docker and deployment script comments * Update celery stdout logfile conf --- Dockerfile | 4 +- .../backend/{celery.conf => fba_celery.conf} | 12 +-- .../{fastapi_server.conf => fba_server.conf} | 4 +- deploy/backend/nginx.conf | 19 ++-- docker-compose.yml | 92 +++++++++++-------- 5 files changed, 76 insertions(+), 55 deletions(-) rename deploy/backend/{celery.conf => fba_celery.conf} (76%) rename deploy/backend/{fastapi_server.conf => fba_server.conf} (82%) diff --git a/Dockerfile b/Dockerfile index 04cdfa4f..45ea71ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,7 +43,7 @@ WORKDIR /fba/backend # === FastAPI server image === FROM base_server AS fastapi_server -COPY deploy/backend/fastapi_server.conf /etc/supervisor/conf.d/ +COPY deploy/backend/fba_server.conf /etc/supervisor/conf.d/ RUN mkdir -p /var/log/fastapi_server @@ -54,7 +54,7 @@ CMD ["/usr/local/bin/granian", "main:app", "--interface", "asgi", "--host", "0.0 # === Celery server image === FROM base_server AS celery -COPY deploy/backend/celery.conf /etc/supervisor/conf.d/ +COPY deploy/backend/fba_celery.conf /etc/supervisor/conf.d/ RUN mkdir -p /var/log/celery diff --git a/deploy/backend/celery.conf b/deploy/backend/fba_celery.conf similarity index 76% rename from deploy/backend/celery.conf rename to deploy/backend/fba_celery.conf index bbe5e10c..b15f56c1 100644 --- a/deploy/backend/celery.conf +++ b/deploy/backend/fba_celery.conf @@ -1,4 +1,4 @@ -[program:celery_worker] +[program:fba_celery_worker] directory=/fba/backend command=/usr/local/bin/celery -A app.task.celery worker -P gevent -c 1000 --loglevel=INFO user=root @@ -6,11 +6,11 @@ autostart=true autorestart=true startretries=5 redirect_stderr=true -stdout_logfile=/var/log/celery/fba_celery_worker.log +stdout_logfile=/var/log/fba/fba_celery_worker.log stdout_logfile_maxbytes=5MB stdout_logfile_backups=5 -[program:celery_beat] +[program:fba_celery_beat] directory=/fba/backend command=/usr/local/bin/celery -A app.task.celery beat --loglevel=INFO user=root @@ -18,11 +18,11 @@ autostart=true autorestart=true startretries=5 redirect_stderr=true -stdout_logfile=/var/log/celery/fba_celery_beat.log +stdout_logfile=/var/log/fba/fba_celery_beat.log stdout_logfile_maxbytes=5MB stdout_logfile_backups=5 -[program:celery_flower] +[program:fba_celery_flower] directory=/fba/backend command=/usr/local/bin/celery -A app.task.celery flower --port=8555 --url-prefix=flower --basic-auth=admin:123456 user=root @@ -30,6 +30,6 @@ autostart=true autorestart=true startretries=5 redirect_stderr=true -stdout_logfile=/var/log/celery/fba_celery_flower.log +stdout_logfile=/var/log/fba/fba_celery_flower.log stdout_logfile_maxbytes=5MB stdout_logfile_backups=5 diff --git a/deploy/backend/fastapi_server.conf b/deploy/backend/fba_server.conf similarity index 82% rename from deploy/backend/fastapi_server.conf rename to deploy/backend/fba_server.conf index c846d48c..1a748550 100644 --- a/deploy/backend/fastapi_server.conf +++ b/deploy/backend/fba_server.conf @@ -1,4 +1,4 @@ -[program:fastapi_server] +[program:fba_server] directory=/fba/backend command=/usr/local/bin/granian main:app --interface asgi --host 0.0.0.0 --port 8001 --workers 1 --backlog 1024 --workers-kill-timeout 120 --backpressure 2000 --pid-file /var/run/granian.pid --log --log-level debug user=root @@ -6,6 +6,6 @@ autostart=true autorestart=true startretries=5 redirect_stderr=true -stdout_logfile=/var/log/fastapi_server/fba_server.log +stdout_logfile=/var/log/fba/fba_server.log stdout_logfile_maxbytes=5MB stdout_logfile_backups=5 diff --git a/deploy/backend/nginx.conf b/deploy/backend/nginx.conf index 0f63d972..6474c48b 100644 --- a/deploy/backend/nginx.conf +++ b/deploy/backend/nginx.conf @@ -9,12 +9,15 @@ server { client_body_buffer_size 5M; gzip on; - gzip_comp_level 2; - gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/xml application/x-httpd-php image/jpeg image/gif image/png; + gzip_comp_level 6; + gzip_types text/plain text/css text/javascript application/javascript application/json application/xml+rss application/xml+atom image/svg+xml font/otf font/ttf font/opentype; + gzip_min_length 256; gzip_vary on; keepalive_timeout 300; + access_log /var/log/nginx/access.log; + location / { proxy_pass http://fba_server:8001; @@ -22,9 +25,9 @@ server { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - proxy_connect_timeout 300s; - proxy_send_timeout 300s; - proxy_read_timeout 300s; + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; } location /flower/ { @@ -34,9 +37,9 @@ server { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; - proxy_connect_timeout 300s; - proxy_send_timeout 300s; - proxy_read_timeout 300s; + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; proxy_redirect off; # WebSocket 支持 diff --git a/docker-compose.yml b/docker-compose.yml index 34eed893..ae624162 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,25 @@ +networks: + fba_network: + name: fba_network + driver: bridge + ipam: + driver: default + config: + - subnet: 172.10.10.0/24 + +volumes: + # 如果你是 postgres 用户,应将 fba_mysql 修改为 fba_postgres + fba_mysql: + name: fba_mysql + fba_redis: + name: fba_redis + fba_static: + name: fba_static + fba_static_upload: + name: fba_static_upload + fba_rabbitmq: + name: fba_rabbitmq + services: fba_server: build: @@ -6,6 +28,7 @@ services: image: fba_server:latest container_name: fba_server restart: always + # 如果你是 postgres 用户,应将 fba_mysql 修改为 fba_postgres depends_on: - fba_mysql - fba_redis @@ -16,6 +39,7 @@ services: - fba_static_upload:/fba/backend/static/upload networks: - fba_network + # 如果你是 postgres 用户,应将 fba_mysql:3306 修改为 fba_postgres:5432 command: - bash - -c @@ -44,20 +68,21 @@ services: --collation-server=utf8mb4_general_ci --lower_case_table_names=1 -# fba_postgres: -# image: postgres:16 -# ports: -# - "${DOCKER_POSTGRES_MAP_PORT:-5432}:5432" -# container_name: fba_postgres -# restart: always -# environment: -# POSTGRES_DB: fba -# POSTGRES_PASSWORD: 123456 -# TZ: Asia/Shanghai -# volumes: -# - fba_postgres:/var/lib/postgresql/data -# networks: -# - fba_network + # # 如果你是 postgres 用户,应保留 fba_postgres 容器脚本并删除 fba_mysql 容器脚本 + # fba_postgres: + # image: postgres:16 + # ports: + # - "${DOCKER_POSTGRES_MAP_PORT:-5432}:5432" + # container_name: fba_postgres + # restart: always + # environment: + # POSTGRES_DB: fba + # POSTGRES_PASSWORD: 123456 + # TZ: Asia/Shanghai + # volumes: + # - fba_postgres:/var/lib/postgresql/data + # networks: + # - fba_network fba_redis: image: redis @@ -72,6 +97,9 @@ services: networks: - fba_network + # 【后端专用】 + # 如果使用此容器,意味着你只需部署后端 API 服务,不需要前端 + # 这与下面的 fba_ui 容器冲突,如果你选择使用 fba_ui 容器,你应该注释或删除 fba_nginx 容器脚本 fba_nginx: image: nginx ports: @@ -87,6 +115,8 @@ services: networks: - fba_network +# # 如果服务器内存小于 4GB,CPU 小于四个内核 +# # 建议通过前端工程单独构建此容器或在本地进行构建 # fba_ui: # build: # context: /root/fastapi_best_architecture_ui @@ -104,9 +134,18 @@ services: # - -g # - daemon off; # volumes: -# # - local_ssl_pem_path:/etc/ssl/xxx.pem -# # - local_ssl_key_path:/etc/ssl/xxx.key +# # nginx https conf +# # 通过 docker 进行部署时,需要打开此配置项并确保<挂载到容器内的证书文件路径>配置 +# # 与 nginx conf 中的 ssl 证书文件路径配置一致,如果你直接将 ssl 证书文件 cp +# # 到了 docker 容器内,则无需挂载证书文件,直接将它们注释或删除即可 +# # local_ssl_pem_path:你在服务器存放 ssl pem 证书文件的路径,自行修改 +# # local_ssl_key_path: 你在服务器存放 ssl key 证书文件的路径,自行修改 +# # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改 +# # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改 +# - local_ssl_pem_path:/etc/ssl/xxx.pem +# - local_ssl_key_path:/etc/ssl/xxx.key # - fba_static:/www/fba_server/backend/static +# - fba_static_upload:/www/fba_server/backend/static/upload # networks: # - fba_network @@ -150,24 +189,3 @@ services: wait-for-it -s fba_rabbitmq:5672 -t 300 supervisord -c /etc/supervisor/supervisord.conf supervisorctl restart - -networks: - fba_network: - name: fba_network - driver: bridge - ipam: - driver: default - config: - - subnet: 172.10.10.0/24 - -volumes: - fba_mysql: - name: fba_mysql - fba_redis: - name: fba_redis - fba_static: - name: fba_static - fba_static_upload: - name: fba_static_upload - fba_rabbitmq: - name: fba_rabbitmq