先日Laravel(を用いたソフト)の開発をDocker Desktop for Windowsを使って行っていました。
ほとんどdockerを使ったことはなかったのですが、適当にphp-fpm,mysql,nginxの3つのコンテナが動作するようにdocker-compose.ymlをサクッと定義して動かしました。
とりあえずアプリケーションをコンテナ上で動かすところまでは進められたのですが、翌日Windowsを起動すると、docker-compose up -dした際にnginxのコンテナが起動できなくなっていました。
もちろん構成ファイル等は一切触っていません。ナズェ?って感じですが、エラーメッセージに「nginx docker Are you trying to mount a directory」の文言が。
ホスト側からコンテナ側にマウントする(設定になっている)default.confがディレクトリだとdocker engineが言ってるんですが、そんなわけはありません。
いろいろなサイトで同様の事例を調べていたのですが、マウントすべきファイルのパスが間違っていたとか、そういう関係のないことばかりが出ます。
そして落ち着いてよく調べてみると、nginxのコンテナが設定ファイルのマウントができなくて起動できないのは事実だったのですが、それ以外のphp-fpmのコンテナもホスト側においてあるソースがマウントできていなかったりと、ホスト→コンテナへのマウント全般ができていない状況だということが判明しました。
たまたまnginxのコンテナはそれがコンテナのスタート時に致命的なエラーとなってコンテナごと落ちていただけだったのです。
ではなぜマウントができないんだ?昨日パソコンの電源を切るまではできていたのに。
で、調べたところ以下の問題であったことが判明し、docker engineをrestartすることで無事解決することができました。
コメント