mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-28 16:00:22 +00:00
7affb9289d
`make image-cephcsi` will fail when Golang is not installed. There is no strict requirement for Golang to be available, it is only used to gather the architecture of the OS where the image is built. It is possible to build the image successfully with `make image-cephcsi GOARCH=amd64`. In case Golang is not installed, GOARCH can not be detected automatically. This will cause a failure while installing Golang in the container image. Because the failure is not very clear, display a warning in the case the GO_ARCH (from ${GOARCH} in the Makefile) is not set. Signed-off-by: Niels de Vos <ndevos@redhat.com>
61 lines
1.6 KiB
Docker
61 lines
1.6 KiB
Docker
ARG SRC_DIR="/go/src/github.com/ceph/ceph-csi/"
|
|
ARG GO_ARCH
|
|
ARG BASE_IMAGE
|
|
|
|
FROM ${BASE_IMAGE} as builder
|
|
|
|
LABEL stage="build"
|
|
|
|
ARG CSI_IMAGE_NAME=quay.io/cephcsi/cephcsi
|
|
ARG CSI_IMAGE_VERSION=canary
|
|
ARG GO_ARCH
|
|
ARG SRC_DIR
|
|
ARG GIT_COMMIT
|
|
ARG GOROOT=/usr/local/go
|
|
|
|
COPY build.env /
|
|
|
|
RUN source /build.env && \
|
|
( test -n "${GO_ARCH}" && exit 0; echo -e "\n\nMissing GO_ARCH argument for building image, install Golang or run: make image-ceph-csi GOARCH=amd64\n\n"; exit 1 ) && \
|
|
mkdir -p ${GOROOT} && \
|
|
curl https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${GO_ARCH}.tar.gz | tar xzf - -C ${GOROOT} --strip-components=1
|
|
|
|
# test if the downloaded version of Golang works (different arch?)
|
|
RUN ${GOROOT}/bin/go version && ${GOROOT}/bin/go env
|
|
|
|
RUN dnf install libcephfs-devel librados-devel librbd-devel /usr/bin/cc make -y
|
|
|
|
ENV GOROOT=${GOROOT} \
|
|
GOPATH=/go \
|
|
CGO_ENABLED=1 \
|
|
GIT_COMMIT="${GIT_COMMIT}" \
|
|
ENV_CSI_IMAGE_VERSION="${CSI_IMAGE_VERSION}" \
|
|
ENV_CSI_IMAGE_NAME="${CSI_IMAGE_NAME}" \
|
|
PATH="${GOROOT}/bin:${GOPATH}/bin:${PATH}"
|
|
|
|
|
|
WORKDIR ${SRC_DIR}
|
|
|
|
# Copy source directories
|
|
COPY . ${SRC_DIR}
|
|
|
|
# Build executable
|
|
RUN make cephcsi
|
|
|
|
#-- Final container
|
|
FROM ${BASE_IMAGE}
|
|
|
|
ARG SRC_DIR
|
|
|
|
LABEL maintainers="Ceph-CSI Authors" \
|
|
version=${CSI_IMAGE_VERSION} \
|
|
architecture=${GO_ARCH} \
|
|
description="Ceph-CSI Plugin"
|
|
|
|
COPY --from=builder ${SRC_DIR}/_output/cephcsi /usr/local/bin/cephcsi
|
|
|
|
# verify that all dynamically linked libraries are available
|
|
RUN [ $(ldd /usr/local/bin/cephcsi | grep -c '=> not found') = '0' ]
|
|
|
|
ENTRYPOINT ["/usr/local/bin/cephcsi"]
|