Windows7のDocker Toolboxでdocker-compose up のエラー対応メモ
Docker超初級者です。
docker-compose up
を実行した際にエラーに遭遇しましたので共有させていただきます。
Docker Quickstart Terminal上で操作しています。
環境
- Windows 7
- Docker Toolbox (1.12.6)
- Docker version 1.12.6, build 78d1802
- docker-compose version 1.9.0, build 2585387
エラー内容
$ docker-compose up
Creating mt6_mysql_mt6_1
ERROR: for mysql_mt6 Cannot create container for service mysql: Invalid bind mount spec "C:\\Users\\tom\\Projects\\mt6\\db\\mysql:/var/lib/mysql:rw": Invalid volume specification: 'C:\\Users\\tom\\Projects\\mt6\\db\\mysql:/var/lib/mysql:rw'
ERROR: Encountered errors while bringing up the project.
ファイルパスの指定方法が間違っており、ファイルのマウントが出来ないようです。
C:\\Users\\tom\\Projects\\mt6\\db\\mysql:/var/lib/mysql:rw
パスがWindowsの形式になっていますね。
docker-compose.yaml抜粋
volumes:
- ./db/mysql:/var/lib/mysql
volumesの設定は相対パス。
原因と対策
原因
最新版のdocker-compose(1.9.0)にはBreaking Changeがあり、WindowsでDocker Toolboxを使っている場合、今まで自動でWindowsパスを変換(C:\Users → /c/Users)してくれていたが、1.9.0からはデフォルトで無効となったとのこと。
参考 → github.com/docker/compose/releases/tag/1.9.0
対策
環境変数にCOMPOSE_CONVERT_WINDOWS_PATHS=1
を設定することでWindows形式のファイルのパスを変換するようになります。
$ COMPOSE_CONVERT_WINDOWS_PATHS=1 docker-compose up
私の環境ではこれでうまくいきました。
以上です。