diff --git a/docker/mongodb-enterprise-ops-manager/.gitignore b/docker/mongodb-enterprise-ops-manager/.gitignore new file mode 100644 index 000000000..335ec9573 --- /dev/null +++ b/docker/mongodb-enterprise-ops-manager/.gitignore @@ -0,0 +1 @@ +*.tar.gz diff --git a/docker/mongodb-enterprise-ops-manager/Dockerfile b/docker/mongodb-enterprise-ops-manager/Dockerfile index aa95b4bee..246a7e0a2 100644 --- a/docker/mongodb-enterprise-ops-manager/Dockerfile +++ b/docker/mongodb-enterprise-ops-manager/Dockerfile @@ -1,11 +1,13 @@ # Build compilable stuff -FROM public.ecr.aws/docker/library/golang:1.24 AS readiness_builder +FROM --platform=${BUILDPLATFORM} public.ecr.aws/docker/library/golang:1.24 AS readiness_builder COPY . /go/src/github.com/mongodb/mongodb-kubernetes WORKDIR /go/src/github.com/mongodb/mongodb-kubernetes -RUN CGO_ENABLED=0 go build -a -buildvcs=false -o /data/scripts/mmsconfiguration ./docker/mongodb-kubernetes-init-ops-manager/mmsconfiguration/edit_mms_configuration.go -RUN CGO_ENABLED=0 go build -a -buildvcs=false -o /data/scripts/backup-daemon-readiness-probe ./docker/mongodb-kubernetes-init-ops-manager/backupdaemon_readinessprobe/backupdaemon_readiness.go +ARG TARGETOS +ARG TARGETARCH +RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -buildvcs=false -o /data/scripts/mmsconfiguration ./docker/mongodb-kubernetes-init-ops-manager/mmsconfiguration/edit_mms_configuration.go +RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -buildvcs=false -o /data/scripts/backup-daemon-readiness-probe ./docker/mongodb-kubernetes-init-ops-manager/backupdaemon_readinessprobe/backupdaemon_readiness.go # Move binaries and scripts FROM scratch AS base @@ -23,6 +25,7 @@ FROM registry.access.redhat.com/ubi9/ubi-minimal ARG version ARG om_download_url +ARG use_local_tarball=false LABEL name="MongoDB Enterprise Ops Manager" \ maintainer="support@mongodb.com" \ @@ -70,10 +73,16 @@ RUN microdnf install --disableplugin=subscription-manager -y \ COPY --from=base /data/licenses /licenses/ COPY --from=base /data/scripts /opt/scripts -RUN curl --fail -L -o ops_manager.tar.gz ${om_download_url} \ - && tar -xzf ops_manager.tar.gz \ - && rm ops_manager.tar.gz \ - && mv mongodb-mms* "${MMS_HOME}" +# Copy local tarball if use_local_tarball is true, otherwise download from URL +COPY docker/mongodb-enterprise-ops-manager/package.tar.gz* /tmp/ +RUN if [ "${use_local_tarball}" = "true" ]; then \ + mv /tmp/package.tar.gz /tmp/ops_manager.tar.gz; \ + else \ + curl --fail -L -o /tmp/ops_manager.tar.gz ${om_download_url}; \ + fi \ + && tar -xzf /tmp/ops_manager.tar.gz -C / \ + && rm /tmp/ops_manager.tar.gz \ + && mv /mongodb-mms* "${MMS_HOME}" # permissions RUN chmod -R 0777 "${MMS_LOG_DIR}" \ diff --git a/docker/mongodb-enterprise-ops-manager/README.md b/docker/mongodb-enterprise-ops-manager/README.md index 440e839bc..ffc068ce6 100644 --- a/docker/mongodb-enterprise-ops-manager/README.md +++ b/docker/mongodb-enterprise-ops-manager/README.md @@ -1,6 +1,8 @@ ### Building locally -For building the MongoDB Enterprise Ops Manager Docker image locally use the example command: +#### Option 1: Download from remote URL + +For building the MongoDB Enterprise Ops Manager Docker image by downloading from a URL: ```bash VERSION="8.0.7" @@ -9,3 +11,28 @@ docker buildx build --load --progress plain . -f docker/mongodb-enterprise-ops-m --build-arg version="${VERSION}" \ --build-arg om_download_url="${OM_DOWNLOAD_URL}" ``` + +#### Option 2: Use local tar.gz file + +To use a locally built tar.gz file: + +1. Build Ops Manager (if it fails look into [this wiki](https://wiki.corp.mongodb.com/spaces/MMS/pages/314679084/Ops+Manager+Development+-+Working+with+Build+Systems)) + + ```bash + cd ${MMS_HOME} + bazel build --cpu=amd64 --build_env=tarball //server:package + ``` + +2. Copy your local tarball to the docker directory: + + ```bash + cp ${MMS_HOME}/bazel-bin/server/package.tar.gz docker/mongodb-enterprise-ops-manager/ + ``` + +3. Build using the local tarball: + ```bash + VERSION="local-build" + docker buildx build --load --progress plain --platform linux/amd64 . -f docker/mongodb-enterprise-ops-manager/Dockerfile -t "mongodb-enterprise-ops-manager:${VERSION}" \ + --build-arg version="${VERSION}" \ + --build-arg use_local_tarball=true + ```