diff --git a/build/Dockerfile.rhel b/build/Dockerfile.rhel index e0a71f4..71f73a8 100644 --- a/build/Dockerfile.rhel +++ b/build/Dockerfile.rhel @@ -1,26 +1,42 @@ -FROM openshift/golang-builder:1.13 AS build-env +# golang-builder is used in OSBS build +ARG GOLANG_BUILDER=openshift/golang-builder:1.13 +ARG OPERATOR_BASE_IMAGE=registry.redhat.io/ubi8/ubi-minimal:latest + +FROM ${GOLANG_BUILDER} AS builder + # Intended to build in OSBS using cachito external sources bundle +ARG REMOTE_SOURCE=. +ARG REMOTE_SOURCE_DIR +ARG REMOTE_SOURCE_SUBDIR=app +ARG DEST_ROOT=/dest-root +ARG GO_BUILD_EXTRA_ARGS="-mod readonly -v " COPY $REMOTE_SOURCE $REMOTE_SOURCE_DIR -WORKDIR $REMOTE_SOURCE_DIR/app -RUN mkdir -p /dest-root/usr/local/bin +WORKDIR ${REMOTE_SOURCE_DIR}/${REMOTE_SOURCE_SUBDIR} + +RUN mkdir -p ${DEST_ROOT}/usr/local/bin/ -RUN go build -mod readonly -v -a -ldflags '-extldflags "-static"' -o /dest-root/csv-generator tools/csv-generator.go -RUN go build -mod readonly -v -a -ldflags '-extldflags "-static"' -o /dest-root/operator cmd/manager/main.go +RUN CGO_ENABLED=0 GO111MODULE=on go build ${GO_BUILD_EXTRA_ARGS} -a -o ${DEST_ROOT}/usr/local/bin/manager cmd/manager/main.go +RUN CGO_ENABLED=0 GO111MODULE=on go build ${GO_BUILD_EXTRA_ARGS} -a -o ${DEST_ROOT}/usr/local/bin/csv-generator tools/csv-generator.go -RUN cp -r build/bin/* /dest-root/usr/local/bin -RUN cp -r templates /dest-root/templates -RUN cp -r deploy/crds /dest-root/crds -RUN cp -r bindata /dest-root/bindata +RUN cp -r build/bin/* ${DEST_ROOT}/usr/local/bin/ +RUN cp -r templates ${DEST_ROOT}/templates -FROM ubi8-minimal:8.1-released +# prep the bundle +RUN mkdir -p ${DEST_ROOT}/bundle +RUN cp -r deploy/crds ${DEST_ROOT}/bundle +RUN cp -r bindata $DEST_ROOT/bindata + +FROM ${OPERATOR_BASE_IMAGE} +ARG DEST_ROOT=/dest-root LABEL com.redhat.component="compute-node-operator-container" \ name="compute-node-operator" \ version="1.0" \ summary="Compute Node Operator" \ - io.k8s.name="compute-node-operator" \ - io.k8s.description="This image includes the compute-node-operator" + io.k8s.display-name="compute-node-operator" \ + io.k8s.description="This image contains the compute-node-operator" \ + io.openshift.tags="cn-openstack openstack" ENV OPERATOR=/usr/local/bin/compute-node-operator \ USER_UID=1001 \ @@ -29,21 +45,21 @@ ENV OPERATOR=/usr/local/bin/compute-node-operator \ OPERATOR_BUNDLE=/usr/share/compute-node-operator/bundle/ # install operator binary -COPY --from=build-env /dest-root/operator ${OPERATOR} -COPY --from=build-env /dest-root/csv-generator /usr/local/bin/csv-generator - -COPY --from=build-env /dest-root/usr/local/bin/* /usr/local/bin -COPY --from=build-env /dest-root/bindata /bindata -RUN /usr/local/bin/user_setup +COPY --from=builder ${DEST_ROOT}/usr/local/bin/* /usr/local/bin/ +COPY --from=builder $DEST_ROOT/bindata /bindata # install our templates RUN mkdir -p ${OPERATOR_TEMPLATES} -COPY --from=build-env /dest-root/templates ${OPERATOR_TEMPLATES} +COPY --from=builder ${DEST_ROOT}/templates ${OPERATOR_TEMPLATES} # install CRDs and required roles, services, etc RUN mkdir -p ${OPERATOR_BUNDLE} -COPY --from=build-env /dest-root/crds/*crd.yaml ${OPERATOR_BUNDLE} +COPY --from=builder ${DEST_ROOT}/bundle/* ${OPERATOR_BUNDLE} -ENTRYPOINT ["/usr/local/bin/entrypoint"] +WORKDIR / +# user setup +RUN /usr/local/bin/user_setup USER ${USER_UID} + +ENTRYPOINT ["/usr/local/bin/entrypoint"]