Skip to content

ContainerConfigエラーの解決
Docker Composeの--force-recreate実行時に発生するKeyError: 'ContainerConfig'の対処法

問題の説明

docker-compose up -d --force-recreate実行中に、以下のエラーが発生しサービス(例: Redis)の再作成に失敗する現象:

ERROR: for app_redis_1  'ContainerConfig'
KeyError: 'ContainerConfig'

この問題の特徴:

  • docker-compose down + docker-compose up -dでは正常動作
  • Docker Compose v1(docker-composeコマンド)で再現
  • 2024年以降の環境更新後によく発生

根本原因:
古いDocker Compose v1(Pythonベース)の互換性問題。特に--force-recreate処理のVolumeバインド関連オプション解釈に不具合が存在します。


解決策: Docker Compose v2への移行

最新のDocker Compose v2(Go言語実装)で問題は解消されます。移行手順は環境に応じて異なります。

方法1: Ubuntu/Debianでの移行

bash
# 既存のv1アンインストール
sudo apt-get remove docker-compose

# v2インストール(プラグイン形式)
mkdir -p ~/.docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose

# 動作確認(v2.x.xと表示されれば成功)
docker compose version

方法2: マルチバージョン環境での注意点

bash
# 両バージョンが混在する場合の確認方法
docker-compose version  # v1 (1.x系)
docker compose version  # v2 (2.x系)

# v2を優先して使用
alias docker-compose="docker compose"  # シェルエイリアス設定推奨

移行後の操作

bash
# v2で正常動作するコマンド例
docker compose -f docker-compose.prod.yml up -d --force-recreate

なぜv2で解決するのか?

項目Docker Compose v1Docker Compose v2
実装PythonベースGo言語ベース
メンテナンス非推奨(2023年終了)公式サポート継続中
--force-recreateの挙動Volumeバインド処理に不具合正しくVolumeを処理

⚠️ 注意
Ubuntuのaptでは異なる2つのパッケージが存在:

bash
docker-compose    # 旧v1(非推奨)
docker-compose-v2 # v2(推奨)

インストール時は明示的にdocker-compose-v2を指定してください。


補足:既存環境のトラブルシューティング

移行後に問題が発生する場合:

bash
# キャッシュクリア
docker system prune -a --volumes

# Composeファイルのバージョン確認(3.8以上が安全)
version: '3.8'
services:
  redis:
    image: redis:latest
    ...

まとめ
ContainerConfigエラーの解決には:

  1. Docker Compose v1の完全アンインストール
  2. v2の公式手順に基づくインストール
  3. docker compose(ハイフンなし)コマンドの使用

これにより--force-recreateを含む全ての操作が安定して動作します。