From 10d9e13f1410529617971105fa1c54c3f9d33fc9 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 25 May 2026 11:39:38 +0800 Subject: [PATCH] fix docker file --- api/Dockerfile | 7 +++++-- api/docker-compose.yml | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/api/Dockerfile b/api/Dockerfile index 718886c..38e4568 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -24,17 +24,20 @@ WORKDIR /app COPY pyproject.toml uv.lock ./ RUN uv sync --frozen --no-dev --no-install-project -# 复制应用代码 +# 复制应用代码并在镜像内安装项目(避免运行时 uv run 重新 sync 拉 dev 依赖) COPY . . +RUN uv sync --frozen --no-dev # 非 root 用户 RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app USER appuser +ENV PATH="/app/.venv/bin:$PATH" + EXPOSE 8000 HEALTHCHECK --interval=15s --timeout=5s --start-period=120s --retries=6 \ CMD python -c "import http.client; conn = http.client.HTTPConnection('localhost', 8000); conn.request('GET', '/health'); r = conn.getresponse(); exit(0 if r.status == 200 else 1)" || exit 1 # Alembic 迁移放到 FastAPI startup(带重试与日志);入口仅启动 web 进程。 -CMD ["sh", "-c", "uv run uvicorn main:app --host 0.0.0.0 --port 8000"] +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/api/docker-compose.yml b/api/docker-compose.yml index 7b58e64..b0bdc1a 100644 --- a/api/docker-compose.yml +++ b/api/docker-compose.yml @@ -104,7 +104,7 @@ services: dockerfile: Dockerfile image: life-echo-api:latest container_name: life-echo-celery-worker - command: uv run celery -A app.tasks.celery_app worker --loglevel=info --concurrency=4 -Q celery,memory_idle + command: celery -A app.tasks.celery_app worker --loglevel=info --concurrency=4 -Q celery,memory_idle env_file: - .env environment: @@ -121,7 +121,7 @@ services: api: condition: service_healthy healthcheck: - test: ["CMD-SHELL", "uv run celery -A app.tasks.celery_app inspect ping --timeout 10 2>/dev/null | grep -q pong || exit 1"] + test: ["CMD-SHELL", "celery -A app.tasks.celery_app inspect ping --timeout 10 2>/dev/null | grep -q pong || exit 1"] interval: 30s timeout: 15s retries: 3 @@ -140,7 +140,7 @@ services: dockerfile: Dockerfile image: life-echo-api:latest container_name: life-echo-celery-beat - command: uv run celery -A app.tasks.celery_app beat --loglevel=info + command: celery -A app.tasks.celery_app beat --loglevel=info env_file: - .env environment: @@ -171,7 +171,7 @@ services: image: life-echo-api:latest container_name: life-echo-flower command: > - sh -c 'uv run celery -A app.tasks.celery_app flower --port=5555 + sh -c 'celery -A app.tasks.celery_app flower --port=5555 --basic_auth=$${FLOWER_USER:-admin}:$${FLOWER_PASSWORD:-changeme}' ports: - "127.0.0.1:${FLOWER_HOST_PORT:-5555}:5555"