docker-composeのバグを踏んだのでアップグレードした話

タイトルの通り。

経緯とか

mimikun✅: "ビルドしようと思ったら、以下の通りのエラーが発生" - mimikun丼

Mastodonというアプリケーションがある。

このアプリケーションはDockerを使ってサクッと構築できる。

今日(2018/03/14)、docker-compose buildをしようとしたら、このようなエラーが表示された。

$ sudo docker-compose build
redis uses an image, skipping
db uses an image, skipping
Building streaming
Traceback (most recent call last):
  File "bin/docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 71, in main
  File "compose/cli/main.py", line 124, in perform_command
  File "compose/cli/main.py", line 254, in build
  File "compose/project.py", line 372, in build
  File "compose/service.py", line 989, in build
  File "site-packages/docker/api/build.py", line 150, in build
  File "site-packages/docker/utils/build.py", line 14, in tar
  File "site-packages/docker/utils/utils.py", line 103, in create_archive
IOError: Can not access file in context: /home/mastodon/mastodon/public/500.html
Failed to execute script docker-compose

dockerとdocker-composeのバージョンは以下の通り。

$ sudo docker -v
Docker version 17.12.1-ce, build 7390fc6
$ sudo docker-compose --version
docker-compose version 1.19.0, build 9e633ef

色々しらべた。

docker-compose build on macos failing with procfs · Issue #5728 · docker/compose · GitHub

IOError: Can not access file in context · Issue #1813 · docker/for-win · GitHub

どうやら、v1.19.0がバグを持っているらしい。

なのでダウングレードかアップグレードをする必要がある。

自分はどうせなら新しい方がいいかな、と思い1.20.0-rc2を入れた。

手順は以下。

  1. バイナリをダウンロードしてきて、上書き保存
  2. 実行権限を付与

といったことをしている。

アップグレード(v1.20.0-rc2)

$ sudo curl -L https://github.com/docker/compose/releases/download/1.20.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

ダウングレード(v1.18.0)

$ sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose