Skip to content

fix(compose): scale 生成時に depends_on の dev 参照を書き換える#12

Merged
takemi-ohama merged 1 commit into
mainfrom
fix/scale-depends-on-rewrite
May 20, 2026
Merged

fix(compose): scale 生成時に depends_on の dev 参照を書き換える#12
takemi-ohama merged 1 commit into
mainfrom
fix/scale-depends-on-rewrite

Conversation

@takemi-ohama
Copy link
Copy Markdown
Contributor

Summary

  • generate_scaled_compose が dev サービスを dev-1..N にリネームする際、他サービスの depends_on: dev 参照を書き換えていなかったため、scaled compose で未定義サービスへの依存となり docker compose up が失敗していた問題を修正
  • _rewrite_depends_on() を新設し、list 形式 (depends_on: [dev, mysql]) と map 形式 (depends_on: {dev: {condition: service_healthy}}) の両方を扱う
  • scale > 1 の場合は単一の dev 参照を全インスタンス (dev-1..N) に展開し、service_healthy チェーンを scaled デプロイでも維持
  • これによりプロジェクト側 compose.yml で dev に healthcheck を付け、mysql/app/nginx から depends_on: dev: condition: service_healthy を書ける

背景

carmo-system-console プロジェクトで、app.working_dir: /work/carmo-system-console を指定すると Docker が dev の clone より先に空ディレクトリを作ってしまい、base/entrypoint.shif [ ! -d "$GIT_REPO" ] で clone をスキップしてソースが配置されない race があった。依存関係で順序を明示しようとしたが、本変更がない状態では scaled compose 生成後に dev 参照が残って失敗するため、本 fix が前提となる。

Test plan

  • carmo-system-console プロジェクトで devbase_work_1/work/carmo-system-console を消したのち devbase up を実行し、dev-1 Healthy → mysql Starting → app Started → nginx Started の順で起動することを確認
  • scaled compose ファイル (.docker-compose.scale.yml) で mysql.depends_ondev から dev-1 に書き換わっていることを確認
  • scale=2 以上での挙動確認 (本プロジェクトは scale=1 固定なので未確認、別途要)
  • depends_on の list 形式 (depends_on: [dev]) を使うプロジェクトでの動作確認

generate_scaled_compose が dev サービスを dev-1..dev-N にリネームする際、
他サービスの depends_on: dev 参照が書き換えられず、scaled compose で
未定義サービスへの依存となって docker compose up が失敗していた。

_rewrite_depends_on() を追加し、list 形式と map 形式 (condition 付き) の
両方で dev 参照を dev-i に展開する。scale > 1 の場合は全インスタンスへ
展開して service_healthy チェーンが正しく機能するようにする。

これにより compose.yml 側で dev の healthcheck と他サービスからの
depends_on: dev: condition: service_healthy が利用可能になる。
@takemi-ohama takemi-ohama merged commit 4d16449 into main May 20, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant