概要
Docker compose ver1.9.0で扱うファイルのファイルパスが長すぎるとエラーになる問題への対処方法
とくにnodejs系のライブラリを扱う時に発生しやすいのではないかと
動作環境
Docker 1.12.5
Docker Compose 1.9.0
Windows 10 pro x64
エラー
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "compose\cli\main.py", line 62, in main
File "compose\cli\main.py", line 114, in perform_command
File "compose\cli\main.py", line 835, in up
File "compose\project.py", line 382, in up
File "compose\service.py", line 305, in ensure_image_exists
File "compose\service.py", line 727, in build
File "site-packages\docker\api\build.py", line 55, in build
File "site-packages\docker\utils\utils.py", line 95, in tar
File "tarfile.py", line 2007, in add
File "tarfile.py", line 1879, in gettarinfo
WindowsError: [Error 3] The system cannot find the path specified: 'k:\\Users\\xxxx\\dev\\tmp\\foobar\\node_modules\\gulp-clean\\node_modules\\gulp-util\\node_modules\\dateformat\\node_modules\\meow\\node_modules\\normalize-package-data\\node_modules\\validate-npm-package-license\\node_modules\\spdx-correct\\node_modules\\spdx-license-ids\\LICENSE'
docker-compose returned -1
結論
Docker composeを一つ前のver 1.8.1にダウングレードする
レジストリやグループポリシーで回避する方法もありましたが、私のWindows10にはそれらの項目がなかったため、ダウングレードしました。
Windows Anniversary Update以降はこの制限が緩和されているようなので、Update可能な方はUpdateしてみてください
Windowsのbuild 1607以上にアップグレードした後に「グループポリシー」 - 「ファイルシステム」 - 「Win32の長いパスを有効にする」にしてください。
Githubでチケットが上がっていたので、そのうち対応されると思います
レジストリでの回避方法も記載されています(レジストリだけでは回避できませんでした。。。)
https://github.com/docker/docker-py/issues/1356
# ダウングレード方法
過去版のDocker for windowsのインストーラが見つかりませんでしたので、
Githubにあがってたdocker-compose.exeをローカルのdocker-compose.exeに上書きします
最新版のDockerと組み合わせると動作が不安定になることがあるので、非推奨とさせて頂きます