Edited at

Windows7のDocker Toolboxでdocker-compose up のエラー対応メモ

More than 1 year has passed since last update.


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

私の環境ではこれでうまくいきました。


以上です。