🐛 fix(deploy): 修干净机器首次构建两处必挂——.dockerignore 排除 deploy/ + celery 并行构建依赖
部署机首次 docker compose up -d 实测暴露: - .dockerignore 自"重写独立dockerfile"起排除整个 deploy/,而 Dockerfile.frontend COPY deploy/nginx/frontend.conf、Dockerfile.moldinsight COPY deploy/requirements-*.txt → COPY not found。历史一直有旧镜像兜底未暴露; BuildKit 不支持重包含被排除目录的子文件,直接移除该行 - Dockerfile.celery FROM gemold-backend:latest 在 compose 并行构建下引用 尚不存在的本地镜像必挂 → 删除 Dockerfile.celery,moldinsight-celery 改为 与 API 服务同一 build 声明 + 同一 gemold-backend:latest tag(compose 去重 只构建一次),celery 仅以 command: 覆盖启动 worker,参数语义不变 - build.sh/.bat 移除 gemold-celery 构建步骤;OPERATIONS / OCC_THROUGHPUT / TECH_DEBT / .env.example 的 Dockerfile.celery 指向同步改写;STATUS 补录 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -5,12 +5,10 @@
|
||||
#
|
||||
# 服务清单:moldinsight(独立 API)+ moldinsight-celery(异步分析 worker)
|
||||
# 不含前端、不含 inventory。
|
||||
# 镜像:两服务共用 gemold-backend:latest(同一 build 声明,compose 只构建一次;
|
||||
# celery 仅以 command 覆盖启动 worker),无跨镜像构建依赖,干净机器裸 up 一把过。
|
||||
# 注意:服务未声明 profiles(避免裸 up 报 "no service selected"),
|
||||
# 模式切换唯一入口是 -f 文件名。
|
||||
#
|
||||
# 镜像说明:本文件里 moldinsight service 的 image 固定为 gemold-backend:latest,
|
||||
# 与 deploy/Dockerfile.celery 的 FROM gemold-backend:latest 对齐;只要 build.sh
|
||||
# 执行过(或已存在该 tag),celery 镜像就能正常构建,不再依赖 gemold-moldinsight tag。
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# 公共环境变量(moldinsight 家族共用)
|
||||
@@ -54,8 +52,7 @@ services:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: deploy/Dockerfile.moldinsight
|
||||
# 与 Dockerfile.celery 的 FROM 对齐;统一用 gemold-backend tag,避免历史
|
||||
# gemold-moldinsight:latest / gemold-backend:latest 双 tag 漂移
|
||||
# 统一用 gemold-backend tag(历史 gemold-moldinsight:latest 双 tag 已废弃)
|
||||
image: gemold-backend:latest
|
||||
container_name: gemold_moldinsight
|
||||
command: ["python", "-m", "uvicorn", "entrypoints.moldinsight:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
@@ -80,13 +77,16 @@ services:
|
||||
- gemold_network
|
||||
|
||||
moldinsight-celery:
|
||||
# 与 moldinsight 共用同一镜像,仅 command 覆盖启动 worker
|
||||
build:
|
||||
context: .
|
||||
dockerfile: deploy/Dockerfile.celery
|
||||
dockerfile: deploy/Dockerfile.moldinsight
|
||||
image: gemold-backend:latest
|
||||
container_name: gemold_celery
|
||||
command: ["sh", "-c", "exec celery -A celery_app worker --workdir=/app/src --concurrency=${CELERY_CONCURRENCY:-2} --max-tasks-per-child=${CELERY_MAX_TASKS_PER_CHILD:-50} --loglevel=info"]
|
||||
environment:
|
||||
<<: *base_env
|
||||
# Celery/OCC 吞吐调优(OCC_THROUGHPUT 方案 A,默认值在 Dockerfile.celery)
|
||||
# Celery/OCC 吞吐调优(OCC_THROUGHPUT 方案 A)
|
||||
CELERY_CONCURRENCY: ${CELERY_CONCURRENCY:-2}
|
||||
CELERY_MAX_TASKS_PER_CHILD: ${CELERY_MAX_TASKS_PER_CHILD:-50}
|
||||
volumes:
|
||||
|
||||
Reference in New Issue
Block a user