mimikunの技術メモ

mimikunがプログラミング中調べてわかったことをまとめていくブログです

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