docker-composeでvolumesを指定してもディレクトリがホストマシン側と同期されない場合の対処

Laradockを使っていて、workspace内でLaravelプロジェクトを作成したのにホストマシン側のフォルダーにファイルが反映されませんでした。
原因を調べて解決していきます。
結論からいうと、自分の場合はESETセキュリティのファイアウォールでホストマシンとの通信がブロックされていました。
ブラウザでlocalhostが開けないとかも同じ原因の可能性があります。

環境はWindows10 Proです。

.envの APP_CODE_CONTAINER_FLAG を空にする(Laradockの場合)

Laradockを使っている場合ですが.envAPP_CODE_CONTAINER_FLAGの設定を空にすると解決するという情報があったので試します。

デフォルトは:cachedになっているのでこれを削除します。
これでコンテナ再起動したら直るという情報がありましたが自分の場合は解決せず。

別の方法を探します。

Dockerの設定でShared Drivesの設定をリセットする

DockerのSettingsでShared Drivesの設定をやりなおします。

Resetボタンを押すとファイアウォールでブロックされた旨がダイアログで表示されます。

この画像には alt 属性が指定されておらず、ファイル名は image-2.png です

自分の場合はESETセキュリティのファイアウォールでブロックされていました。

ESETセキュリティのファイアウォール設定でIPを許可する

ESETの設定を開き、「ネットワーク保護」を選択します。

続いて「トラブルシューティングウィザード」を開きます。

次の画面でブロックされているIPのリストが表示されるので、DockerのIPを選択して「ブロック解除」ボタンを押します。

これでDockerからホストマシンに接続できるようになり、docker-composeのvolumesで指定したディレクトリが同期されるようになります。

以上となります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*