動作確認環境
以下のバージョンで確認しています。
Docker for windows : Docker 18.06.1-ce
背景
80番ポートを使うコンテナを複数起動したい時、もっとも簡単なソリューションがjwilderさんが公開されているリバースプロキシコンテナを使うことだと思います。
nginxを使ったリバースプロキシ on Docker
https://qiita.com/ka2asd/items/372d30be64c57a8a81b1
これならnginxのconfigすら必要ありません。
httpだけではなくhttpsにも対応しています。所定の場所に証明書を配置するだけの圧倒的手軽さ。素晴らしい。
んが、Docker for Windowsで使用する場合、ちょっぴり問題があります。
/var/run/docker.sock
をマウントする必要があるのですが、そこでエラーが出るのです。
エラーメッセージ
Cannot create container for service portainer: b'Mount denied:\nThe source path "\\\\var\\\\run\\\\docker.sock:/var/run/docker.sock"\nis not a valid Windows path'
こんな時はgoogle先生に助けてもらうのが一番です。
結果、githubにissueがたっているのを発見しました。
docker-compose bind mount docker.sock not a valid Windows path
https://github.com/docker/for-win/issues/1829
長くスレッドが伸びているので要点だけ書きます。
やること
docker-compose.ymlの並びに.envを作成する
- project_dir
+--- docker-compose.yml
+--- .env
.envの内容
COMPOSE_CONVERT_WINDOWS_PATHS=1
以上!
元記事の下のほうに、stableじゃなくedge版のDocker for Windowsを使う必要があるとか書いてあって顔に縦線入ったのですが、試したみたところ現時点(2018/10/23)のstableの最新で問題なく動作しました。
では良いDockerライフを。