docker build support buildx and arm architecture

This commit is contained in:
wanyaoqi
2020-08-25 16:13:57 +08:00
parent 777059648b
commit 6b944626b7
34 changed files with 195 additions and 86 deletions
-4
View File
@@ -1,4 +0,0 @@
/.git
/vendor
/cmd
/pkg
+1 -1
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/ansibleserver-base:1.0.0
FROM registry.cn-beijing.aliyuncs.com/yunionio/ansibleserver-base:v1.0.2
ADD ./_output/alpine-build/bin/ansibleserver /opt/yunion/bin/ansibleserver
+1 -1
View File
@@ -1,4 +1,4 @@
FROM alpine:3.11.6
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
MAINTAINER "Yousong Zhou <zhouyousong@yunionyun.com>"
+2 -2
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/bin/apigateway /opt/yunion/bin/apigateway
ADD ./_output/alpine-build/bin/apigateway /opt/yunion/bin/apigateway
+2 -2
View File
@@ -1,5 +1,5 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/climc-base:v20200308
FROM registry.cn-beijing.aliyuncs.com/yunionio/climc-base:20200820
ADD ./build/climc/root/opt /opt
ADD ./_output/bin/climc ./_output/bin/*cli /opt/yunion/bin/
ADD ./_output/alpine-build/bin/climc ./_output/alpine-build/bin/*cli /opt/yunion/bin/climc
+1 -1
View File
@@ -1,4 +1,4 @@
FROM frolvlad/alpine-glibc:glibc-2.28
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
+2 -2
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/bin/cloudevent /opt/yunion/bin/cloudevent
ADD ./_output/alpine-build/bin/cloudevent /opt/yunion/bin/cloudevent
+2 -2
View File
@@ -1,4 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
COPY ./build/cloudid/root/opt/ /opt/
ADD ./_output/bin/cloudid /opt/yunion/bin/cloudid
ADD ./_output/alpine-build/bin/cloudid /opt/yunion/bin/cloudid
+2 -2
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/bin/cloudnet /opt/yunion/bin/cloudnet
ADD ./_output/alpine-build/bin/cloudnet /opt/yunion/bin/cloudnet
+2 -2
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/bin/devtool /opt/yunion/bin/devtool
ADD ./_output/alpine-build/bin/devtool /opt/yunion/bin/devtool
+3 -2
View File
@@ -1,4 +1,5 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
COPY ./build/esxi-agent/root/opt/ /opt/
ADD ./_output/bin/esxi-agent /opt/yunion/bin/esxi-agent
ADD ./_output/alpine-build/bin/esxi-agent /opt/yunion/bin/esxi-agent
+2 -2
View File
@@ -1,6 +1,6 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/glance-base:latest
FROM registry.cn-beijing.aliyuncs.com/yunionio/torrent:20200820
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
RUN mkdir -p /opt/yunion/bin
ADD ./_output/bin/glance /opt/yunion/bin/glance
ADD ./_output/alpine-build/bin/glance /opt/yunion/bin/glance
-18
View File
@@ -1,18 +0,0 @@
FROM frolvlad/alpine-glibc:glibc-2.28
MAINTAINER "Yaoqi Wan <wanyaoqi@yunionyun.com>"
RUN apk update && \
apk add --no-cache tzdata ca-certificates qemu-img && \
rm -rf /var/cache/apk/*
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV TZ Asia/Shanghai
# add executable file torrent
# make cmd/torrent && ./scripts/bundle-libraries.sh _output/bin/bundles/torrent _output/bin/torrent
RUN mkdir -p /opt/yunion/bin
ADD ./_output/bin/torrent /opt/yunion/bin/torrent
ADD ./_output/bin/.torrent.bin /opt/yunion/bin/.torrent.bin
ADD ./_output/bin/bundles/torrent /opt/yunion/bin/bundles/torrent
+1 -1
View File
@@ -1,4 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/host-base:v0.2.0
FROM registry.cn-beijing.aliyuncs.com/yunionio/host-base:v0.3
MAINTAINER "Yaoqi Wan wanyaoqi@yunionyun.com"
+2 -4
View File
@@ -1,4 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/host-deployer-base:v0.0.3
FROM registry.cn-beijing.aliyuncs.com/yunionio/host-deployer-base:v0.2
MAINTAINER "Yaoqi Wan wanyaoqi@yunionyun.com"
@@ -6,6 +6,4 @@ ENV TZ Asia/Shanghai
RUN mkdir -p /opt/yunion/bin
ADD ./_output/bin/host-deployer /opt/yunion/bin/host-deployer
ADD ./_output/bin/.host-deployer.bin /opt/yunion/bin/.host-deployer.bin
ADD ./_output/bin/bundles/host-deployer /opt/yunion/bin/bundles/host-deployer
ADD ./_output/alpine-build/bin/host-deployer /opt/yunion/bin/host-deployer
+2 -2
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/bin/keystone /opt/yunion/bin/keystone
ADD ./_output/alpine-build/bin/keystone /opt/yunion/bin/keystone
+4
View File
@@ -0,0 +1,4 @@
FROM alpine:3.11
RUN echo http://dl-cdn.alpinelinux.org/alpine/edge/testing >>/etc/apk/repositories
RUN apk update && apk add kubectl && rm -rf /var/cache/apk/*
+2 -3
View File
@@ -1,4 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
ADD ./_output/bin/logger /opt/yunion/bin/logger
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/alpine-build/bin/logger /opt/yunion/bin/logger
+2 -3
View File
@@ -1,4 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
ADD ./_output/bin/monitor /opt/yunion/bin/monitor
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/alpine-build/bin/monitor /opt/yunion/bin/monitor
+2 -2
View File
@@ -1,4 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
COPY ./build/notify/root/opt/ /opt/
ADD ./_output/bin/notify /opt/yunion/bin/notify
ADD ./_output/alpine-build/bin/notify /opt/yunion/bin/notify
+1 -1
View File
@@ -1,4 +1,4 @@
FROM frolvlad/alpine-glibc:glibc-2.28
FROM alpine:3.11
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
+2 -2
View File
@@ -1,4 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
COPY ./build/region/root/opt/ /opt/
ADD ./_output/bin/region /opt/yunion/bin/region
ADD ./_output/alpine-build/bin/region /opt/yunion/bin/region
+1 -1
View File
@@ -1,4 +1,4 @@
FROM alpine:3.11.3
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
RUN mkdir -p /opt/yunion/bin
ADD ./_output/alpine-build/bin/region-dns /opt/yunion/bin/region-dns
+2 -2
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/bin/s3gateway /opt/yunion/bin/s3gateway
ADD ./_output/alpine-build/bin/s3gateway /opt/yunion/bin/s3gateway
+2 -2
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/bin/scheduler /opt/yunion/bin/scheduler
ADD ./_output/alpine-build/bin/scheduler /opt/yunion/bin/scheduler
+16
View File
@@ -0,0 +1,16 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
MAINTAINER "Yaoqi Wan <wanyaoqi@yunionyun.com>"
RUN apk update && \
apk add --no-cache tzdata ca-certificates qemu-img && \
rm -rf /var/cache/apk/*
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV TZ Asia/Shanghai
# add executable file torrent
# make cmd/torrent
RUN mkdir -p /opt/yunion/bin
ADD ./_output/alpine-build/bin/torrent /opt/yunion/bin/torrent
+1 -1
View File
@@ -1,4 +1,4 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/openvswitch:2.10.4-0
FROM registry.cn-beijing.aliyuncs.com/yunionio/openvswitch:2.10.4-1
MAINTAINER "Yousong Zhou <zhouyousong@yunion.cn>"
+2 -2
View File
@@ -1,3 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/webconsole-base:latest
FROM registry.cn-beijing.aliyuncs.com/yunionio/webconsole-base:v0.2
ADD ./_output/bin/webconsole /opt/yunion/bin/webconsole
ADD ./_output/alpine-build/bin/webconsole /opt/yunion/bin/webconsole
+1 -1
View File
@@ -1,4 +1,4 @@
FROM yunion/kubectl:1.14.3
FROM registry.cn-beijing.aliyuncs.com/yunionio/kubectl:1.18.6
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
+2 -3
View File
@@ -1,4 +1,3 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.1
ADD ./_output/bin/yunionconf /opt/yunion/bin/yunionconf
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
ADD ./_output/alpine-build/bin/yunionconf /opt/yunion/bin/yunionconf
@@ -0,0 +1,16 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/alpine-build:1.0-3 as build
ARG TARGETPLATFORM
ARG BUILDPLATFORM
RUN mkdir -p /root/go/src/yunion.io/x/onecloud
COPY . /root/go/src/yunion.io/x/onecloud
WORKDIR /root/go/src/yunion.io/x/onecloud
RUN make cmd/esxi-agent
FROM FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
MAINTAINER "Yaoqi Wan wanyaoqi@yunionyun.com"
RUN mkdir -p /opt/yunion/bin
COPY --from=build /root/go/src/yunion.io/x/onecloud/build/esxi-agent/root/opt/ /opt/
COPY --from=build /root/go/src/yunion.io/x/onecloud/_output/bin/esxi-agent /opt/yunion/bin/esxi-agent
+18
View File
@@ -0,0 +1,18 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/alpine-build:1.0-3 as build
ARG TARGETPLATFORM
ARG BUILDPLATFORM
RUN mkdir -p /root/go/src/yunion.io/x/onecloud
COPY . /root/go/src/yunion.io/x/onecloud
WORKDIR /root/go/src/yunion.io/x/onecloud
RUN make cmd/host
FROM registry.cn-beijing.aliyuncs.com/yunionio/host-base:v0.3
MAINTAINER "Yaoqi Wan wanyaoqi@yunionyun.com"
ENV TZ Asia/Shanghai
RUN apk add librados librbd
RUN mkdir -p /opt/yunion/bin
COPY --from=build /root/go/src/yunion.io/x/onecloud/_output/bin/host /opt/yunion/bin/host
@@ -0,0 +1,25 @@
FROM registry.cn-beijing.aliyuncs.com/yunionio/alpine-build:1.0-3 as build
ARG TARGETPLATFORM
ARG BUILDPLATFORM
RUN mkdir -p /root/go/src/yunion.io/x/onecloud
COPY . /root/go/src/yunion.io/x/onecloud
WORKDIR /root/go/src/yunion.io/x/onecloud
RUN make cmd/torrent
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.2
MAINTAINER "Yaoqi Wan <wanyaoqi@yunionyun.com>"
RUN apk update && \
apk add --no-cache tzdata ca-certificates qemu-img && \
rm -rf /var/cache/apk/*
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV TZ Asia/Shanghai
# add executable file torrent
# make cmd/torrent
RUN mkdir -p /opt/yunion/bin
COPY --from=build /root/go/src/yunion.io/x/onecloud/_output/bin/torrent /opt/yunion/bin/torrent
+71 -15
View File
@@ -34,29 +34,30 @@ REGISTRY=${REGISTRY:-docker.io/yunion}
TAG=${TAG:-latest}
build_bin() {
local BUILD_ARCH=$2
local BUILD_CC=$3
local BUILD_CGO=$4
case "$1" in
climc)
GOOS=linux make cmd/$1 cmd/*cli
;;
ansibleserver|\
host|\
region-dns|\
vpcagent)
docker run --rm \
-v $SRC_DIR:/root/go/src/yunion.io/x/onecloud \
-v $SRC_DIR/_output/alpine-build:/root/go/src/yunion.io/x/onecloud/_output \
registry.cn-beijing.aliyuncs.com/yunionio/alpine-build:1.0-1 \
/bin/sh -c "set -ex; cd /root/go/src/yunion.io/x/onecloud; make cmd/$1; chown -R $(id -u):$(id -g) _output"
registry.cn-beijing.aliyuncs.com/yunionio/alpine-build:1.0-3 \
/bin/sh -c "set -ex; cd /root/go/src/yunion.io/x/onecloud; $BUILD_ARCH $BUILD_CC $BUILD_CGO GOOS=linux make cmd/$1 cmd/*cli; chown -R $(id -u):$(id -g) _output"
;;
*)
GOOS=linux make cmd/$1
docker run --rm \
-v $SRC_DIR:/root/go/src/yunion.io/x/onecloud \
-v $SRC_DIR/_output/alpine-build:/root/go/src/yunion.io/x/onecloud/_output \
registry.cn-beijing.aliyuncs.com/yunionio/alpine-build:1.0-3 \
/bin/sh -c "set -ex; cd /root/go/src/yunion.io/x/onecloud; $BUILD_ARCH $BUILD_CC $BUILD_CGO GOOS=linux make cmd/$1; chown -R $(id -u):$(id -g) _output"
;;
esac
}
build_bundle_libraries() {
for bundle_component in 'host-deployer' 'baremetal-agent'; do
for bundle_component in 'baremetal-agent'; do
if [ $1 == $bundle_component ]; then
$CUR_DIR/bundle_libraries.sh _output/bin/bundles/$1 _output/bin/$1
break
@@ -71,11 +72,53 @@ build_image() {
docker build -t "$tag" -f "$2" "$3"
}
buildx_and_push() {
local tag=$1
local file=$2
local path=$3
local arch=$4
docker buildx build -t "$tag" --platform "linux/$arch" -f "$2" "$3" --push
}
push_image() {
local tag=$1
docker push "$tag"
}
build_process() {
local component=$1
build_bin $component
build_bundle_libraries $component
img_name="$REGISTRY/$component:$TAG"
build_image $img_name $DOCKER_DIR/Dockerfile.$component $SRC_DIR
push_image "$img_name"
}
build_process_with_buildx() {
local component=$1
local arch=$2
build_env="GOARCH=$arch"
img_name="$REGISTRY/$component:$TAG"
if [[ $arch == arm64 ]]; then
img_name="$img_name-$arch"
build_env="$build_env CC=aarch64-linux-musl-gcc"
if [[ $component == host ]]; then
build_env="$build_env CGO_ENABLED=1"
fi
fi
case "$component" in
host|esxi-agent)
buildx_and_push $img_name $DOCKER_DIR/multi-arch/Dockerfile.$component $SRC_DIR $arch
;;
*)
build_bin $component $build_env
buildx_and_push $img_name $DOCKER_DIR/Dockerfile.$component $SRC_DIR $arch
;;
esac
}
ALL_COMPONENTS=$(ls cmd | grep -v '.*cli$' | xargs)
if [ "$#" -lt 1 ]; then
@@ -97,9 +140,22 @@ for component in $COMPONENTS; do
continue
fi
echo "Start to build component: $component"
build_bin $component
build_bundle_libraries $component
img_name="$REGISTRY/$component:$TAG"
build_image $img_name $DOCKER_DIR/Dockerfile.$component $SRC_DIR
push_image "$img_name"
if [[ $component == baremetal-agent ]]; then
build_process $component
continue
fi
case "$ARCH" in
all)
for arch in "arm64" "amd64"; do
build_process_with_buildx $component $arch
done
;;
arm64|amd64)
build_process_with_buildx $component $ARCH
;;
*)
build_process $component
;;
esac
done