Merge pull request #171 from AAEE86/dev

refactor(docker): 优化 Gunicorn 配置并提升代码可读性
This commit is contained in:
fawney19
2026-02-11 17:21:19 +08:00
committed by GitHub
3 changed files with 213 additions and 202 deletions

View File

@@ -38,6 +38,15 @@ ADMIN_PASSWORD=admin123456
# 应用端口(默认 8084 # 应用端口(默认 8084
# APP_PORT=8084 # APP_PORT=8084
# Gunicorn Worker 数量(默认 4
# 建议最小设置为 2
# GUNICORN_WORKERS=4
# Gunicorn Max Requests默认 4000
# Worker 处理指定数量请求后自动重启,防止内存泄漏
# max-requests-jitter 会自动设置为 MAX_REQUESTS/20 (5%)
# MAX_REQUESTS=4000
# API Key 前缀(默认 sk # API Key 前缀(默认 sk
# API_KEY_PREFIX=sk # API_KEY_PREFIX=sk

View File

@@ -129,7 +129,7 @@ RUN printf '%s\n' \
'stderr_logfile=/var/log/nginx/error.log' \ 'stderr_logfile=/var/log/nginx/error.log' \
'' \ '' \
'[program:app]' \ '[program:app]' \
'command=gunicorn src.main:app -c gunicorn_conf.py --preload -w %(ENV_GUNICORN_WORKERS)s -k uvicorn.workers.UvicornWorker --bind 127.0.0.1:8084 --timeout 120 --max-requests 2000 --max-requests-jitter 100 --access-logfile - --error-logfile - --log-level info' \ 'command=/bin/bash -c "MAX_REQUESTS_JITTER=$((${MAX_REQUESTS:-4000}/20)); exec gunicorn src.main:app -c gunicorn_conf.py --preload -w %(ENV_GUNICORN_WORKERS)s -k uvicorn.workers.UvicornWorker --bind 127.0.0.1:8084 --timeout 120 --max-requests ${MAX_REQUESTS:-2000} --max-requests-jitter $MAX_REQUESTS_JITTER --access-logfile - --error-logfile - --log-level info"' \
'directory=/app' \ 'directory=/app' \
'autostart=true' \ 'autostart=true' \
'autorestart=true' \ 'autorestart=true' \
@@ -150,7 +150,8 @@ ENV PYTHONUNBUFFERED=1 \
LANG=C.UTF-8 \ LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \ LC_ALL=C.UTF-8 \
PORT=8084 \ PORT=8084 \
GUNICORN_WORKERS=4 GUNICORN_WORKERS=4 \
MAX_REQUESTS=4000
EXPOSE 80 EXPOSE 80
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost/health || exit 1 CMD curl -f http://localhost/health || exit 1

View File

@@ -141,7 +141,7 @@ RUN printf '%s\n' \
'stderr_logfile=/var/log/nginx/error.log' \ 'stderr_logfile=/var/log/nginx/error.log' \
'' \ '' \
'[program:app]' \ '[program:app]' \
'command=gunicorn src.main:app -c gunicorn_conf.py --preload -w %(ENV_GUNICORN_WORKERS)s -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:%(ENV_PORT)s --timeout 120 --max-requests 2000 --max-requests-jitter 100 --access-logfile - --error-logfile - --log-level info' \ 'command=/bin/bash -c "MAX_REQUESTS_JITTER=$((${MAX_REQUESTS:-4000}/20)); exec gunicorn src.main:app -c gunicorn_conf.py --preload -w %(ENV_GUNICORN_WORKERS)s -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:%(ENV_PORT)s --timeout 120 --max-requests ${MAX_REQUESTS:-2000} --max-requests-jitter $MAX_REQUESTS_JITTER --access-logfile - --error-logfile - --log-level info"' \
'directory=/app' \ 'directory=/app' \
'autostart=true' \ 'autostart=true' \
'autorestart=true' \ 'autorestart=true' \
@@ -165,7 +165,8 @@ ENV PYTHONUNBUFFERED=1 \
LANG=C.UTF-8 \ LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \ LC_ALL=C.UTF-8 \
PORT=8084 \ PORT=8084 \
GUNICORN_WORKERS=4 GUNICORN_WORKERS=4 \
MAX_REQUESTS=4000
EXPOSE 80 EXPOSE 80