Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build(asi): update dockerfile #932

Merged
merged 1 commit into from
Dec 21, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 39 additions & 38 deletions build/multi/Dockerfile.multi.asi
Original file line number Diff line number Diff line change
@@ -1,47 +1,48 @@
FROM --platform=$BUILDPLATFORM golang:1.18 as build
ARG TARGETPLATFORM
ARG BUILDPLATFORM
ENV GOPROXY=https://goproxy.cn/,http://gomodule-repository.aone.alibaba-inc.com,https://mirrors.aliyun.com/goproxy/,direct \
GOPRIVATE="gitlab.alibaba-inc.com" \
GO111MODULE=on \
GOOS=linux \
CGO_ENABLED=0

ADD . /go/src/github.com/kubernetes-sigs/alibaba-cloud-csi-driver/
# syntax=docker/dockerfile:1.4
FROM --platform=$BUILDPLATFORM golang:1.20.7 as build
WORKDIR /go/src/github.com/kubernetes-sigs/alibaba-cloud-csi-driver
COPY . .
RUN --mount=type=ssh \
git config --global url."git@gitlab.alibaba-inc.com:".insteadOf "https://gitlab.alibaba-inc.com/" && \
ssh-keyscan gitlab.alibaba-inc.com >> /etc/ssh/ssh_known_hosts && \
export GOPROXY=https://goproxy.cn/,http://gomodule-repository.aone.alibaba-inc.com,https://mirrors.aliyun.com/goproxy/,direct && \
export GOPRIVATE="gitlab.alibaba-inc.com" && \
go get gitlab.alibaba-inc.com/idaas/go-cloud-token-isolate-consumer@v0.0.6-nok8s-nokeepalive && \
go mod tidy && \
go mod vendor
ARG TARGETARCH
ARG TARGETOS
RUN --mount=type=cache,target=/root/.cache/go-build \
export GOOS=$TARGETOS && \
export GOARCH=$TARGETARCH && \
export CGO_ENABLED=0 && \
go build -ldflags "-X main._BRANCH_='v1.0.0' -X main._VERSION_='v1.14.5' -X main._BUILDTIME_=`date '+%Y-%m-%d-%H:%M:%S'`" -o /out/plugin.csi.alibabacloud.com && \
go build -o /out/csiplugin-connector ./build/lib/csiplugin-connector.go

RUN git config --global url."git@gitlab.alibaba-inc.com:".insteadOf "https://gitlab.alibaba-inc.com/" && mkdir -p -m 0600 ~/.ssh && ssh-keyscan gitlab.alibaba-inc.com >> ~/.ssh/known_hosts
RUN --mount=type=ssh go get gitlab.alibaba-inc.com/idaas/go-cloud-token-isolate-consumer@v0.0.6-nok8s-nokeepalive
RUN --mount=type=ssh go mod tidy
RUN --mount=type=ssh go mod vendor
RUN env GOARCH=$(echo $TARGETPLATFORM | cut -f2 -d '/') go build --mod=vendor -ldflags "-X main._BRANCH_='v1.0.0' -X main._VERSION_='v1.14.5' -X main._BUILDTIME_=`date '+%Y-%m-%d-%H:%M:%S'`" -o plugin.csi.alibabacloud.com && env GOARCH=$(echo $TARGETPLATFORM | cut -f2 -d '/') GOOS=linux CGO_ENABLED=0 go build --mod=vendor ./build/lib/csiplugin-connector.go

FROM registry.eu-west-1.aliyuncs.com/acs/alinux:3-update
LABEL maintainers="Alibaba Cloud Authors" description="Alibaba Cloud CSI Plugin"
RUN yum install -y ca-certificates file tzdata nfs-utils xfsprogs e4fsprogs pciutils iputils strace cloud-utils-growpart gdisk nc tar cpio
ARG BUILDPLATFORM
ARG TARGETPLATFORM
COPY ./build/lib/ /csi

RUN cp /csi/$(echo $TARGETPLATFORM | cut -f2 -d '/')-nsenter /usr/bin/nsenter; cp /csi/$(echo $TARGETPLATFORM | cut -f2 -d '/')-nsenter /nsenter
RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "arm64" ]]; then cp /csi/$(echo $TARGETPLATFORM | cut -f2 -d '/')-ossfs /usr/bin/ossfs; cp /csi/$(echo $TARGETPLATFORM | cut -f2 -d '/')-ossfs /usr/local/bin/ossfs; fi
RUN yum install -y ca-certificates file tzdata nfs-utils xfsprogs e4fsprogs pciutils iputils strace cloud-utils-growpart gdisk nc telnet tar cpio && \
yum clean all
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

ARG ossfsVer=1.80.6.ack.1
ARG update_ossfsVer=1.87.0
RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "amd64" ]]; then curl http://ack-csiplugin.oss-cn-hangzhou.aliyuncs.com/ossfs/ossfs_${ossfsVer}-b42b3a8_centos7.0_x86_64.rpm -o /root/ossfs_${ossfsVer}_centos7.0_x86_64.rpm; fi
RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "amd64" ]]; then curl http://ack-csiplugin.oss-cn-hangzhou.aliyuncs.com/pre/ossfs/ossfs_${update_ossfsVer}_centos7.0_x86_64.rpm -o /root/ossfs_${update_ossfsVer}_centos7.0_x86_64.rpm; fi
RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "amd64" ]]; then curl http://ack-csiplugin.oss-cn-hangzhou.aliyuncs.com/pre/ossfs/ossfs_${update_ossfsVer}_centos8_x86_64.rpm -o /root/ossfs_${update_ossfsVer}_centos8_x86_64.rpm; fi
RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "amd64" ]]; then curl https://aliyun-alinas-eac.oss-cn-beijing.aliyuncs.com/alinas-efc-1.2-3.x86_64.rpm -o /root/alinas-efc-1.2-3.x86_64.rpm; fi
RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "amd64" ]]; then curl https://aliyun-encryption.oss-cn-beijing.aliyuncs.com/aliyun-alinas-utils-1.1-6.al7.noarch.rpm -o /root/aliyun-alinas-utils-1.1-6.al7.noarch.rpm; fi
ARG TARGETARCH
WORKDIR /root
RUN if [[ $TARGETARCH == "amd64" ]]; then \
curl -O https://aliyun-alinas-eac.oss-cn-beijing.aliyuncs.com/alinas-efc-1.2-3.x86_64.rpm && \
curl -O https://aliyun-encryption.oss-cn-beijing.aliyuncs.com/aliyun-alinas-utils-1.1-6.al7.noarch.rpm; \
fi
RUN --mount=type=bind,source=build/lib,target=/csi-lib \
cp /csi-lib/$TARGETARCH-nsenter /usr/bin/nsenter && \
ln -s /usr/bin/nsenter /nsenter && \
cp /csi-lib/$TARGETARCH-entrypoint.sh /entrypoint.sh && \
chmod +x /entrypoint.sh && \
cp /csi-lib/freezefs.sh /freezefs.sh && \
mkdir /csi && \
cp /csi-lib/csiplugin-connector.service /csi/csiplugin-connector.service
COPY --link --from=build /out/csiplugin-connector /csi/csiplugin-connector
COPY --link --from=build /out/plugin.csi.alibabacloud.com /usr/bin/plugin.csi.alibabacloud.com

RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "amd64" ]]; then mv /csi/jindo-fuse-4.4.0-20220620.tar.gz /; tar zvxf /jindo-fuse-4.4.0-20220620.tar.gz -C /; fi
RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "arm64" ]]; then mkdir /acs; mv /csi/$(echo $TARGETPLATFORM | cut -f2 -d '/')-fuse-2.9.2-11.el7.aarch64.rpm /acs/fuse-2.9.2-11.el7.aarch64.rpm; mv /csi/$(echo $TARGETPLATFORM | cut -f2 -d '/')-fuse-libs-2.9.2-11.el7.aarch64.rpm /acs/fuse-libs-2.9.2-11.el7.aarch64.rpm; fi
RUN mv /csi/$(echo $TARGETPLATFORM | cut -f2 -d '/')-entrypoint.sh /entrypoint.sh
COPY ./build/lib/csiplugin-connector.service /bin/csiplugin-connector.service
COPY ./build/lib/freezefs.sh /freezefs.sh
COPY --from=build /go/src/github.com/kubernetes-sigs/alibaba-cloud-csi-driver/csiplugin-connector /csi/csiplugin-connector
COPY --from=build /go/src/github.com/kubernetes-sigs/alibaba-cloud-csi-driver/plugin.csi.alibabacloud.com /bin/plugin.csi.alibabacloud.com
RUN chmod +x /bin/plugin.csi.alibabacloud.com && chmod +x /entrypoint.sh && chmod +x /csi/csiplugin-connector && chmod +x /bin/csiplugin-connector.service && chmod +x /usr/bin/nsenter && chmod +x /nsenter && chmod +x /freezefs.sh
RUN if [[ $(echo $TARGETPLATFORM | cut -f2 -d '/') == "arm64" ]]; then chmod +x /usr/bin/ossfs && chmod +x /usr/local/bin/ossfs; fi
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["/entrypoint.sh"]