我尝试在 Travis-CI 上为多种架构构建 docker 映像。这对 amd64 和 i386 工作得很好,但对 ARM 却失败了。
{ARCH}/nextcloud:apache
构建在其之上的 Dockerfilephp:7.3-apache-stretch
再次使用debian:stretch-slim
. 所以所有图像都使用相同的堆栈并且应该反应相似。
.travis.yml
env:
- TAG=i386 ARCH=i386
- TAG=amd64 ARCH=amd64
- TAG=armhf ARCH=arm32v7
- TAG=aarch64 ARCH=arm64v8
before_script:
- docker run --rm --privileged multiarch/qemu-user-static:register --reset
script:
- docker build --pull --build-arg ARCH=$ARCH -t escoand/nextcloud:$TAG nextcloud
Dockerfile
ARG ARCH
FROM ${ARCH}/nextcloud:apache
RUN apt-get update && apt-get install -y supervisor && \
rm -rf /var/lib/apt/lists/* && \
mkdir /var/log/supervisord /var/run/supervisord
如前所述,i386 和 amd64 的构建工作没有问题。第一个 RUN 命令已经导致 ARM 构建失败:
standard_init_linux.go:185: exec user process caused "no such file or directory"
The command '/bin/sh -c apt-get update && apt-get install -y supervisor && rm -rf /var/lib/apt/lists/* && mkdir /var/log/supervisord /var/run/supervisord' returned a non-zero code: 1
https://travis-ci.org/escoand/dockerfiles/jobs/562967055
对我来说,这听起来像是/bin/sh
问题所在,但不知道如何处理。