今日(2021/01/27)付けで、docker-compose 1.28.2が公開されているのですが、下記のパッチが必要なようでした。ただ、Ubuntu 18.04なJetsonNanoでも使えるようになりました。(2021/01/27)
はじめに
昨日(2021/01/21)付けでdocker-compose 1.28.0が公開されました。この1.28.0からは、Makefileが採用されていますからmakeコマンドを実行するだけでビルドすることができて便利になりました。
ところがRaspberry Piで実行するとエラーになってしまいましたので、クイックハックしてビルドしてみました。
Raspberry Pi用の修正
- Dockerfileの修正
Dockerfileの88行目で、Docker用のベースイメージがscratchになっていますが、これをalpineに修正します。
FROM alpine AS bin
2. ビルド用スクリプトの修正
script/buil/linuxとして用意されている、ビルド用スクリプトを以下の内容に修正します。
#!/bin/bash
set -ex
./script/clean
DOCKER_COMPOSE_GITSHA="$(script/build/write-git-sha)"
TAG="docker/compose:tmp-glibc-linux-binary-${DOCKER_COMPOSE_GITSHA}"
docker build -t "${TAG}" . ¥
--target bin ¥
--build-arg DISTRO=debian ¥
--build-arg GIT_COMMIT="${DOCKER_COMPOSE_GITSHA}" ¥
--output dist/
TMP_CONTAINER=$(docker create "${TAG}")
mkdir -p dist
ARCH=$(uname -m)
docker cp "${TMP_CONTAINER}":/docker-compose-- "dist/docker-compose-Linux-${ARCH}"
docker container rm -f "${TMP_CONTAINER}"
docker image rm -f "${TAG}"
# Ensure that we output the binary with the same name as we did before
## mv dist/docker-compose-linux-amd64 "dist/docker-compose-Linux-${ARCH}"
1.27.4で実行していたビルド用のスクリプトと同様にdockerビルドしたコンテナーからdocker cpでdistディレクトリーにビルドしたバイナリーをコピーしています。
docker-composeのビルド
用意が出来ましたらビルドを実行します。1.28.0では、makeコマンドを実行するだけです。
$ make
ビルドに成功すれば、distディレクトリーにバイナリーがコピーされています。以降は、「Raspberry Pi用docker-composeの構築」の記事と同様に/usr/local/binディレクトリーにコピーすれば大丈夫です。
今回作成したdocker-composeは、以下の内容となっています。
$ docker-compose version
docker-compose version 1.28.0, build d02a7b1a
docker-py version: 4.4.1
CPython version: 3.9.0
OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019