LoginSignup
57
46

More than 3 years have passed since last update.

Raspberry Pi用docker-composeの構築

Last updated at Posted at 2017-04-22

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を実行できます。

57
46
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
46