Raspberry Pi用docker-composeの構築
個人用のホームページを作成しました。今後は、そちらの方に整理していきたいと思いますので、よろしくお願いします。
2021/01/21 Raspberry Pi用docker-composeの構築(1.28.0)
新しいホームページの方に、昨日(2021/01/20)に公開されたdocker-compose 1.28.0についての記事を書かせていただきました。
docker-compose の 1.25.0 が公開されましたので、別の記事として以下に書いています。(記:2019/11/22)
2019/02/14 に masnagam さんからコメントをいただいた VirtualEnv の問題 ですが、本日(2019/03/29) 公開された 1.24.0 でも armhf 用は修正されていないようです。そのため、Various build fixes #6501 のプルリクに合わせて Dockerfile.armhf を修正する必要があります。(記: 2019/03/29)
このページを書いてから1年半ほど経過して、docker-compose も今の (2018/12/07現在) バージョンは 1.23.2 になっています。この Bugfixes には以下の記述があります。
Reverted a 1.23.0 change that appended random strings to container names created by docker-compose up, causing addressability issues.
Note: Containers created by docker-compose run will continue to use randomly generated names to avoid collisions during parallel runs.
最初に 1.23.1
を使ったときには、この振舞いに困って docker-compose.yml
ファイルに container-name:
を追加したりしていましたけど、これで安心です。(2018/12/07 追記)
1. ラズパイ用のdocker-compose
Raspberry Pi3でもdockerを使用することができるのですが、docker-composeはありません。docker公式のリポジトリでdocker-engineの最新版を利用できるのですが、やはりdocker-composeはありません。
一応、Hypriotのリポジトリを使用すればdocker-composeを使えるのですが現在(2017/04/22)のバージョンは 1.9.0 となっています。
そこで、github.comにあるdocker公式リポジトリから構築してみることにします。ただし、dockerコンテナとして作成していますので起動には時間がかかっています。
正しい構築方法をyagitechさんのページで教えてもらいましたので、修正追加させてもらいます。ちゃんとdocker-composeのバイナリを作成しています。
2. githubからソースを取得
最初に公式リポジトリからソースを取得します。
git clone https://github.com/docker/compose.git
3. docker buildコマンドの実行
取得したリポジトリにあるDockerfile.armhf
を使用してビルドします。
docker build -t docker-compose:armhf -f Dockerfile.armhf .
ここでは、docker-compose:armhfとしています。実際に Raspberry Pi3 でビルドして、約30分ほどかかってコンテナが作成されました。
4. dockerコンテナの実行
できあがったコンテナを実行してみます。
$ docker run docker-compose:armhf version
docker-compose version 1.13.0dev, build unknown
docker-py version: 2.2.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
docker-compose version 1.13.0
が正常に動作しています。
今となっては、これは不要ですが自戒の意味を込めて残しています。
5. docker-composeコマンドの作成
以下が、yagitechさんのページで教えていただいた方法です。元々は、Getting docker-compose on Raspberry Pi (ARM) the easy way (updated)を参照しているそうです。
docker run --rm --entrypoint="script/build/linux-entrypoint" -v $(pwd)/dist:/code/dist -v $(pwd)/.git:/code/.git "docker-compose:armhf"
この結果dist
ディレクトリにdocker-compose-Linux-armv7l
ができますから/usr/local/bin
ディレクトリにコピーします。
cp dist/docker-compose-Linux-armv7l /usr/local/bin/docker-compose
chown root:root /usr/local/bin/docker-compose
chmod 755 /usr/local/bin/docker-compose
できあがったコマンドを実行します。
$ docker-compose version
docker-compose version 1.13.0dev, build unknown
docker-py version: 2.2.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
これで、普通にコマンドとしてdocker-compose
を実行できます。