Skip to content
Draft
Show file tree
Hide file tree
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
1 change: 1 addition & 0 deletions docker/mongodb-enterprise-ops-manager/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.tar.gz
23 changes: 16 additions & 7 deletions docker/mongodb-enterprise-ops-manager/Dockerfile
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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="[email protected]" \
Expand Down Expand Up @@ -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}" \
Expand Down
29 changes: 28 additions & 1 deletion docker/mongodb-enterprise-ops-manager/README.md
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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
```
Loading