Docker 特拉维斯多体系结构建筑

Docker 特拉维斯多体系结构建筑,docker,travis-ci,Docker,Travis Ci,我有一个项目,我正在尝试为arm和x86_64构建 x86_64构建通过,但arm构建失败,原因是: Status: Downloaded newer image for kutsudock/rpi-alpine-go:latest standard_init_linux.go:175: exec user process caused "exec format error" 这是我的yaml: env: global: - VERSION=1.${TRAVIS_BUILD_NUM

我有一个项目,我正在尝试为arm和x86_64构建

x86_64构建通过,但arm构建失败,原因是:

Status: Downloaded newer image for kutsudock/rpi-alpine-go:latest
standard_init_linux.go:175: exec user process caused "exec format error"
这是我的yaml:

env:
  global:
    - VERSION=1.${TRAVIS_BUILD_NUMBER}
  matrix:
    - ARCH=x86_64
      GOIMG=golang:1.6
      DOCKER_BUILD=mastermindg/docker-flow-proxy:${VERSION}
      DOCKERFILE=Dockerfile.amd64
    - ARCH=rpi
      GOIMG=kutsudock/rpi-alpine-go
      DOCKER_BUILD=mastermindg/docker-flow-proxy:rpi-${VERSION}
      DOCKERFILE=Dockerfile.rpi

sudo: required

services:
  - docker

script:
  - docker run --rm -v $PWD:/usr/src/myapp -w /usr/src/myapp -v go:/go ${GOIMG} bash -c "cd /usr/src/myapp && go get -d -v -t && go test --cover -v ./... --run UnitTest && go build -v -o docker-flow-proxy"

after_success:
  - docker build -t ${DOCKER_BUILD} -f ${DOCKERFILE} .
  - '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && docker login -e $DOCKER_EMAIL -u $DOCKER_USERNAME -p $DOCKER_PASSWORD || false'
  - '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && docker push ${DOCKER_BUILD} || false'

branches:
  only:
    - master

如何在Travis上构建arm Docker图像?

查看Travis后,我发现了以下问题:

多亏了@moul Debian,Debian有了一个多拱引导。只需在Docker运行之前注册qemu即可

就你而言:

docker run --rm --privileged multiarch/qemu-user-static:register
docker run --rm -v $PWD:/usr/src/myapp -w /usr/src/myapp -v go:/go ${GOIMG} bash -c "cd /usr/src/myapp && go get -d -v -t && go test --cover -v ./... --run UnitTest && go build -v -o docker-flow-proxy"
使用ARM 64位(aarch64)和ARM 32位(armv7l)的方法如下:

docker run --rm --privileged multiarch/qemu-user-static:register --reset

docker run --rm -t multiarch/ubuntu-debootstrap:arm64-bionic uname -a
Linux 28c784e9c7bc 4.4.0-101-generic #124~14.04.1-Ubuntu SMP Fri Nov 10 19:05:36 UTC 2017 aarch64 aarch64 aarch64 GNU/Linux

docker run --rm -t multiarch/ubuntu-debootstrap:armhf-bionic uname -a
Linux 4de7b4e919b0 4.4.0-101-generic #124~14.04.1-Ubuntu SMP Fri Nov 10 19:05:36 UTC 2017 armv7l armv7l armv7l GNU/Linux
另见


另请检查:

上周TravisCI宣布了多体系结构支持,包括现在的Arm支持,对所有开源项目都是免费的。请参阅本博客文章:

before_script:
    - wget https://github.com/riotkit-org/ci-utils/archive/v2.0.0.zip -O /tmp/ci-utils.zip  # change master to a release tag only here (version)
    - curl "https://raw.githubusercontent.com/riotkit-org/ci-utils/master/ci-integration/travis.sh" -s | bash

    # activate ARM builds on travis
    - /opt/riotkit/utils/bin/setup-travis-arm-builds