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 docspipを使う時はpythonのめんどくさいバージョン管理の問題が出てきますので素のraspbianで使いたくありません。virtualenvとかすぐ忘れるし、そもそもdockerを入れているのに余計な事です。
Install using pip
公式なドキュメントでは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 BERTHONBERTHONさん、ありがとう!
手順を紹介します。
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を外部へ公開する手順を紹介する予定です。
コメント
コメントを投稿