Merge pull request #14 from eddyhub/master

Multiarch build
This commit is contained in:
will Farrell
2018-08-21 15:33:48 -06:00
committed by GitHub
4 changed files with 78 additions and 2 deletions
+15
View File
@@ -0,0 +1,15 @@
image: docker:latest
services:
- docker:dind
stages:
- build_and_deploy
job:
stage: build_and_deploy
script:
- mkdir ~/.docker
- echo '{"experimental":"enabled"}' | tee ~/.docker/config.json
- apk add --no-cache bash
- ls -al ~/.docker/config.json
- cat ~/.docker/config.json
- bash build.sh $DOCKER_ENV_CI_PROJECT_PATH $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $CI_REGISTRY
+24
View File
@@ -0,0 +1,24 @@
sudo: required
services:
- docker
language: bash
env:
global:
- TRAVIS_SECURE_ENV_VARS=true
before_install:
- sudo apt-get remove docker docker-engine docker.io
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get update
- sudo apt-get -y install docker-ce
- echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
- sudo service docker restart
- mkdir ~/.docker
- echo '{"experimental":"enabled"}' | tee ~/.docker/config.json
- ls -al ~/.docker/config.json
- cat ~/.docker/config.json
script:
- bash build.sh $TRAVIS_REPO_SLUG $DOCKER_USERNAME $DOCKER_PASSWORD index.docker.io
+3 -2
View File
@@ -1,4 +1,5 @@
FROM alpine:3.5
ARG arch=x86_64
FROM multiarch/alpine:${arch}-v3.8
RUN apk add --no-cache curl jq
@@ -7,4 +8,4 @@ ENTRYPOINT ["/docker-entrypoint"]
HEALTHCHECK --interval=5s CMD exit 0
CMD ["autoheal"]
CMD ["autoheal"]
+36
View File
@@ -0,0 +1,36 @@
#!/bin/sh
REPO=${1}
DOCKER_USERNAME=${2}
DOCKER_PASSWORD=${3}
DOCKER_REGESTRY=${4}
declare -A ARCH_MAP
ARCH_MAP[x86_64]=x86_64
ARCH_MAP[armhf]=arm
ARCH_MAP[arm64]=arm64
docker run --rm --privileged multiarch/qemu-user-static:register --reset
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
echo "Building docker images"
for i in "${!ARCH_MAP[@]}"; do
echo "################################################################################"
echo "Building and pushing: ${REPO}-${ARCH_MAP[$i]}:latest "
echo "################################################################################"
docker build --build-arg arch=${i} -t ${REPO}-${ARCH_MAP[$i]}:latest .;
docker push ${REPO}-${ARCH_MAP[$i]}:latest;
done;
MANIFESTS=""
for arch in "${ARCH_MAP[@]}"; do MANIFESTS="${MANIFESTS} ${REPO}-${arch}:latest"; done
echo "################################################################################"
echo "Building and pushing: ${REPO}-${ARCH_MAP[$i]}:latest "
echo "################################################################################"
docker manifest create ${REPO}:latest ${MANIFESTS};
for arch in "${ARCH_MAP[@]}"; do
docker manifest annotate --os linux --arch ${arch} ${REPO}:latest ${REPO}-${arch}:latest;
done;
docker manifest push ${REPO}:latest