Install Docker トラブルシューティング - opensource-workshop/connect-cms GitHub Wiki
Docker 開発環境のトラブルシューティング
Docker を使った開発環境の構築で発生することがあるエラーと対処方法です。
WSLでファイルを修正した後にPermission deniedになる
ホストとコンテナでファイルの所有者が異なっていないか確認してください。対象のファイルや生成ディレクトリを特定し、必要な範囲に限って所有者またはパーミッションを修正します。
[!CAUTION] リポジトリ全体に再帰的な書き込み権限を与えると、意図しないユーザーからも変更できる状態になります。

イメージのメタデータ取得時にタイムアウトする
failed to solve: php:7-apache: failed to authorize: failed to fetch anonymous token:
dial tcp: lookup auth.docker.io: i/o timeout
Docker Hubへの名前解決や通信状況を確認し、必要に応じて先にイメージを取得します。
docker pull php:7-apache
docker compose up -d
DB dumpのインポート時にCannot add foreign key constraintになる
初期セットアップで作成した空テーブルの外部キー制約と、インポートするdumpが競合している可能性があります。既存データをバックアップしてから不要なテーブルを削除するか、DBツールの外部キー制約チェックを一時的に無効化するオプションを検討してください。
DB起動時にPorts are not availableになる
ホスト側の3306番ポートを別のサービスが使用しています。そのサービスを停止するか、.envのDB_FORWARD_PORTを未使用のポートへ変更してください。アプリからDBコンテナへ接続するDB_HOST=dbとDB_PORT=3306は変更しません。
apt-getでRelease file ... is not valid yetになる
PCとWSLの時刻がずれている可能性があります。
sudo hwclock --hctosys
Allowed memory size ... exhaustedになる
コンテナ内のphp.iniで、開発環境に適した上限を設定してコンテナを再起動します。
memory_limit = 512M
npm run prodでPermission deniedになる
npm installとビルドを異なるユーザーで実行すると、node_modulesやnpmキャッシュの権限が原因で失敗することがあります。所有者と権限を確認し、同じユーザーで依存パッケージのインストールとビルドを実行してください。
npm install
npm run prod
画像アップロード時にEXIF関連の500エラーになる
Reading Exif data is not supported by this PHP installation.
docker/webapp/Dockerfileのdocker-php-ext-installにexifが含まれていることを確認し、コンテナを再作成します。
RUN docker-php-ext-install -j$(nproc) gd pcntl exif
docker compose down
docker compose build
docker compose up -d