fix(compose): escape minio-init env vars in shell command
This commit is contained in:
@@ -193,10 +193,10 @@ jobs:
|
||||
command:
|
||||
- -c
|
||||
- >
|
||||
until mc alias set local "$MINIO_ENDPOINT" "$MINIO_ACCESS_KEY" "$MINIO_SECRET_KEY"; do
|
||||
until mc alias set local "$$MINIO_ENDPOINT" "$$MINIO_ACCESS_KEY" "$$MINIO_SECRET_KEY"; do
|
||||
sleep 1;
|
||||
done;
|
||||
mc mb -p "local/$MINIO_BUCKET" || true;
|
||||
mc mb -p "local/$$MINIO_BUCKET" || true;
|
||||
restart: "no"
|
||||
|
||||
api:
|
||||
|
||||
@@ -238,6 +238,11 @@
|
||||
- 最小运行态验收:
|
||||
- `docker compose ps`(关键服务 `api/web/celery-worker/celery-beat/db/redis/minio` 为 Up,关键依赖健康)。
|
||||
- `curl -fsS http://127.0.0.1:8000/health` 返回 API 健康 JSON。
|
||||
|
||||
## Compose 变量转义口径(2026-04-30)
|
||||
|
||||
- 在 `docker-compose*.yml` 的 `command`/`entrypoint`(尤其是 `sh -c`)中,若变量需要在容器内 shell 阶段展开,必须写成 `$$VAR`,避免被 Compose 在渲染阶段提前插值为空或错误值。
|
||||
- `minio-init` 场景基线:`mc alias set` 与 `mc mb` 命令中的 `MINIO_*` 一律使用 `$$MINIO_*`。
|
||||
- `curl -I -fsS http://127.0.0.1:3000/` 返回 `HTTP/1.1 200 OK`。
|
||||
- 结合 `docker compose logs --tail` 抽样检查 `api/web/celery-worker/celery-beat` 启动日志是否正常。
|
||||
|
||||
|
||||
+2
-2
@@ -67,10 +67,10 @@ services:
|
||||
command:
|
||||
- -c
|
||||
- >
|
||||
until mc alias set local "$MINIO_ENDPOINT" "$MINIO_ACCESS_KEY" "$MINIO_SECRET_KEY"; do
|
||||
until mc alias set local "$$MINIO_ENDPOINT" "$$MINIO_ACCESS_KEY" "$$MINIO_SECRET_KEY"; do
|
||||
sleep 1;
|
||||
done;
|
||||
mc mb -p "local/$MINIO_BUCKET" || true;
|
||||
mc mb -p "local/$$MINIO_BUCKET" || true;
|
||||
restart: "no"
|
||||
|
||||
api:
|
||||
|
||||
@@ -28,3 +28,22 @@
|
||||
- 风险与影响:
|
||||
- 影响范围:Docker 暴露端口与本机直连默认端口。
|
||||
- 若已有外部脚本/客户端固定连接 `5433`,需同步改为 `5434` 或显式覆盖 `POSTGRES_PORT/DB_PORT`。
|
||||
|
||||
## Work Log - 修复 minio-init 变量被 Compose 提前替换(2026-04-30)
|
||||
|
||||
- 背景:
|
||||
- `minio-init` 的 shell 命令中直接使用 `$MINIO_*`,会在 Compose 渲染阶段被提前插值,导致容器内拿不到期望值。
|
||||
|
||||
- 本次改动:
|
||||
- `docker-compose.yml`
|
||||
- `minio-init.command` 中的 `$MINIO_ENDPOINT/$MINIO_ACCESS_KEY/$MINIO_SECRET_KEY/$MINIO_BUCKET` 统一改为 `$$MINIO_*`,确保在容器 shell 执行时再展开。
|
||||
- `.github/workflows/main.yml`
|
||||
- 同步修复部署流程里生成的 `docker-compose.prod.yml` 模板片段,避免线上 compose 仍回归单 `$`。
|
||||
|
||||
- 验证:
|
||||
- `git diff -- docker-compose.yml .github/workflows/main.yml`:确认仅发生 `$ -> $$` 的目标改动。
|
||||
- `docker compose config`:通过(`compose_ok`),Compose 语法与渲染正常。
|
||||
|
||||
- 风险与影响:
|
||||
- 影响范围仅为 `minio-init` 启动命令的变量展开时机,不影响 `environment` 注入值本身。
|
||||
- 若后续新增 `command: /bin/sh -c` 且需要容器内展开变量,仍需遵循 `$$VAR` 规则。
|
||||
|
||||
Reference in New Issue
Block a user