Install Docker トラブルシューティング - opensource-workshop/connect-cms GitHub Wiki

Docker 開発環境のトラブルシューティング

Docker を使った開発環境の構築で発生することがあるエラーと対処方法です。

WSLでファイルを修正した後にPermission deniedになる

ホストとコンテナでファイルの所有者が異なっていないか確認してください。対象のファイルや生成ディレクトリを特定し、必要な範囲に限って所有者またはパーミッションを修正します。

[!CAUTION] リポジトリ全体に再帰的な書き込み権限を与えると、意図しないユーザーからも変更できる状態になります。

permission denied

イメージのメタデータ取得時にタイムアウトする

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番ポートを別のサービスが使用しています。そのサービスを停止するか、.envDB_FORWARD_PORTを未使用のポートへ変更してください。アプリからDBコンテナへ接続するDB_HOST=dbDB_PORT=3306は変更しません。

apt-getRelease file ... is not valid yetになる

PCとWSLの時刻がずれている可能性があります。

sudo hwclock --hctosys

Allowed memory size ... exhaustedになる

コンテナ内のphp.iniで、開発環境に適した上限を設定してコンテナを再起動します。

memory_limit = 512M

npm run prodPermission 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/Dockerfiledocker-php-ext-installexifが含まれていることを確認し、コンテナを再作成します。

RUN docker-php-ext-install -j$(nproc) gd pcntl exif
docker compose down
docker compose build
docker compose up -d