Raspberry PiにDocker Composeをインストールする

raspberry pi
今回はDocker Composeをインストールしてみます。

前回はDockerのインストールをしました。
関連記事:Raspberry PiにDockerをインストールする
今回はDocker Composeをインストールしてみます。

docker-composeを使うと複数のコンテナを連携させる記述を一つのファイルで管理できます。

Raspbianのバージョンはこの記事公開時最新の
Raspbian Buster with desktop Version:July 2019
を使いこれにdocker-composeをインストールします。

Dockerのインストールと同じくできるだけ公式なインストール手順を紹介しようと思ったのですがarm用のリリースファイルもRaspbian用の手順もありません。
こんな場合はpipを用いたインストールをするようです。
Install Docker Compose | docker docs
Install using pip
pipを使う時はpythonのめんどくさいバージョン管理の問題が出てきますので素のraspbianで使いたくありません。virtualenvとかすぐ忘れるし、そもそもdockerを入れているのに余計な事です。
公式なドキュメントではRaspbianへdocker-composeをインストールする良い方法がありませんでした。

ちなみにRaspbianのレポジトリにdocker-composeがあります。apt installでインストールできます。この記事公開時、レポジトリのdocker-composeのバージョンはstable 1.21.0-3となっています。少し古いですが動きます。

せっかくなので最新バージョンを使いたいです。
ググるとRaspbianでも動くdocker-composeのバイナリを作る方法を紹介しているサイトが見つかりました。
Revisiting getting docker-compose on Raspberry Pi (ARM) the easy way | ICE AND FIRE – BY J‑C BERTHON
BERTHONさん、ありがとう!

手順を紹介します。
docker-composeをビルドするdockerイメージを作ります。コンテナでdocker-composeをビルドしてバイナリファイルをホストのディレクトリに保存します。そのバイナリを実行用ディレクトリへ配置し権限を変更すれば完成です。

それではやってみます。
docker-composeのソースを取得します。ソースはDownloadsフォルダに置きます。
cd ~/Downloads
git clone https://github.com/docker/compose.git
cd compose
git checkout bump-1.24.1
バージョンはこの記事公開時の安定版1.24.1にしています。
スクリプトを修正します。
sed -i -e 's:^VENV=/code/.tox/py36:VENV=/code/.venv; python3 -m venv $VENV:' script/build/linux-entrypoint
sed -i -e '/requirements-build.txt/ i $VENV/bin/pip install -q -r requirements.txt' script/build/linux-entrypoint
ビルドするためのdockerイメージを作ります。
docker build -t docker-compose:armhf -f Dockerfile.armhf .
2GB近いイメージを作ります。Raspberry Pi 3 Bで1時間ほどかかりました。
コンテナを展開し実行します。
docker run --rm --entrypoint="script/build/linux-entrypoint" -v $(pwd)/dist:/code/dist -v $(pwd)/.git:/code/.git "docker-compose:armhf"
30分弱かかります。出来上がったバイナリファイルを配置し権限を変更します。
sudo cp dist/docker-compose-Linux-armv7l /usr/local/bin/docker-compose
sudo chown root:root /usr/local/bin/docker-compose
sudo chmod 0755 /usr/local/bin/docker-compose
これでdocker-composeのインストールが完了しました。
バージョンを確認してみます。
docker-compose version
docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.9
OpenSSL version: OpenSSL 1.1.1c  28 May 2019
無事動きました。
ビルド用に作ったイメージは削除して良いです。
docker rmi docker-compose:armhf
docker rmi python:3.6

docker-composeをアンインストールする場合は実行ファイルを削除するだけです。次のようにします。
sudo rm /usr/local/bin/docker-compose

まとめ

今回はdocker-composeをインストールしました。公式の方法は使いませんでした。早くarm用のバイナリも配布してくれると良いですね。

Dockerとdocker-composeを入れただけでは何のためにやったのか全然わかりません。次回はdocker-composeでnginxとnode-redを動かしてnode-redを外部へ公開する手順を紹介する予定です。

コメント

最近のコメント

Threaded Recent Comments will be here.