Skip to content
This repository was archived by the owner on May 15, 2023. It is now read-only.
Open
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
58 changes: 37 additions & 21 deletions build/Dockerfile.rhel
Original file line number Diff line number Diff line change
@@ -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 \
Expand All @@ -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"]