docker-composeをarm64用にRaspberry pi4でビルド
目次
docker-compose入れることに苦労した日記が書かれております。
結論
一番早道の方法は、一番下に書かれているansibleでインストールするにてさくっとインストールしてしまうほうがよろしいのではないだろうかと思っている次第。
docker-composeをdockerでビルドする
結論から書くと、この方法ではだめだった。
docker/compose: Define and run multi-container applications with Docker
arm64でサーバーを構築しているのだが、docker-composeがバイナリとして用意さていない。
マシンとしては4台あるので各々にpython入れてインストールするのはアホらしいので、一個でビルドして他のマシンに展開しようと思う。
git clone https://github.com/docker/compose.git
その後、Dockerfileを変更すればいいのかなと思った。
diff --git a/Dockerfile b/Dockerfile
index 918c6876..ee6ee76d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -7,9 +7,9 @@ ARG RUNTIME_DEBIAN_VERSION=stretch-20191224-slim
ARG BUILD_PLATFORM=alpine
-FROM docker:${DOCKER_VERSION} AS docker-cli
+FROM arm64v8/docker:${DOCKER_VERSION} AS docker-cli
-FROM python:${PYTHON_VERSION}-alpine${BUILD_ALPINE_VERSION} AS build-alpine
+FROM arm64v8/python:${PYTHON_VERSION}-alpine${BUILD_ALPINE_VERSION} AS build-alpine
RUN apk add --no-cache \
bash \
build-base \
@@ -29,7 +29,7 @@ RUN apk add --no-cache \
zlib-dev
ENV BUILD_BOOTLOADER=1
-FROM python:${PYTHON_VERSION}-${BUILD_DEBIAN_VERSION} AS build-debian
+FROM arm64v8/python:${PYTHON_VERSION}-${BUILD_DEBIAN_VERSION} AS build-debian
RUN apt-get update && apt-get install --no-install-recommends -y \
curl \
gcc \
@@ -65,8 +65,8 @@ ARG GIT_COMMIT=unknown
ENV DOCKER_COMPOSE_GITSHA=$GIT_COMMIT
RUN script/build/linux-entrypoint
-FROM alpine:${RUNTIME_ALPINE_VERSION} AS runtime-alpine
-FROM debian:${RUNTIME_DEBIAN_VERSION} AS runtime-debian
+FROM arm64v8/alpine:${RUNTIME_ALPINE_VERSION} AS runtime-alpine
+FROM arm64v8/debian:${RUNTIME_DEBIAN_VERSION} AS runtime-debian
FROM runtime-${BUILD_PLATFORM} AS runtime
COPY docker-compose-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["sh", "/usr/local/bin/docker-compose-entrypoint.sh"]
で、その後、
ubuntu@pi4-1:~/src/git/github/another-author/compose$ docker run --rm -v /home/ubuntu/src/git/github/another-author/compose/:/script compose cp /usr/local/bin/docker-compose /script/
これで行けると思ったのだけど、
ubuntu@pi4-1:~/src/git/github/another-author/compose$ ./docker-compose
Error loading shared library libz.so.1: No such file or directory (needed by ./docker-compose)
Error relocating ./docker-compose: inflate: symbol not found
Error relocating ./docker-compose: inflateInit_: symbol not found
Error relocating ./docker-compose: inflateEnd: symbol not found
ubuntu@pi4-1:~/src/git/github/another-author/compose$ ldd ./docker-compose
linux-vdso.so.1 (0x0000ffff852fc000)
libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000ffff85279000)
libc.musl-aarch64.so.1 => not found
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff85107000)
/lib/ld-musl-aarch64.so.1 => /lib/ld-linux-aarch64.so.1 (0x0000ffff852cd000)
ubuntu@pi4-1:~/src/git/github/another-author/compose$ sudo ln -s /lib/aarch64-linux-musl/libc.so /lib/libc.musl-aarch64.so.1
ubuntu@pi4-1:~/src/git/tluna/work-blog$ ./docker-compose
bash: ./docker-compose: No such file or directory
ubuntu@pi4-1:~/src/git/tluna/work-blog$ ldd docker-compose
ldd: ./docker-compose: No such file or directory
解消できなかった。 残念無念。
pipでインストールする
debian buster (arm64) に docker install - Qiita
これも、エラーで止まった。。。。
もしかして?と思って確認してみると、python3であれば使えるっぽい。ぽい。
sudo apt intall pytho3-pip
pip3 install docker-compose
ansibleでインストールする
Pi4が4台もありますので、pipでインストールするで作成した。 dockerもdocker-composeも一緒に入るのでよきよき。 t1una/sbc-ansible: ブログで出すときに困ったのでもう公開しちゃう