|
| 1 | +# Build compilable stuff |
| 2 | + |
| 3 | +FROM public.ecr.aws/docker/library/golang:1.24 AS readiness_builder |
| 4 | +COPY . /go/src/github.com/mongodb/mongodb-kubernetes |
| 5 | +WORKDIR /go/src/github.com/mongodb/mongodb-kubernetes |
| 6 | + |
| 7 | +RUN CGO_ENABLED=0 go build -a -buildvcs=false -o /data/scripts/mmsconfiguration ./docker/mongodb-kubernetes-init-ops-manager/mmsconfiguration/edit_mms_configuration.go |
| 8 | +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 |
| 9 | + |
| 10 | +# Move binaries and scripts |
| 11 | +FROM scratch AS base |
| 12 | + |
| 13 | +COPY --from=readiness_builder /data/scripts/mmsconfiguration /data/scripts/mmsconfiguration |
| 14 | +COPY --from=readiness_builder /data/scripts/backup-daemon-readiness-probe /data/scripts/backup-daemon-readiness-probe |
| 15 | + |
| 16 | +# After v2.0, when non-Static Agent images will be removed, please ensure to copy those files |
| 17 | +# into ./docker/mongodb-enterprise-ops-manager directory. Leaving it this way will make the maintenance easier. |
| 18 | +COPY ./docker/mongodb-kubernetes-init-ops-manager/scripts/docker-entry-point.sh /data/scripts |
| 19 | +COPY ./docker/mongodb-kubernetes-init-ops-manager/scripts/backup-daemon-liveness-probe.sh /data/scripts |
| 20 | +COPY ./docker/mongodb-kubernetes-init-ops-manager/LICENSE /data/licenses/mongodb-enterprise-ops-manager |
| 21 | + |
| 22 | +FROM registry.access.redhat.com/ubi9/ubi-minimal |
| 23 | + |
| 24 | +ARG version |
| 25 | +ARG om_download_url |
| 26 | + |
| 27 | +LABEL name="MongoDB Enterprise Ops Manager" \ |
| 28 | + maintainer="support@mongodb.com" \ |
| 29 | + vendor="MongoDB" \ |
| 30 | + version=${version} \ |
| 31 | + release="1" \ |
| 32 | + summary="MongoDB Enterprise Ops Manager Image" \ |
| 33 | + description="MongoDB Enterprise Ops Manager" |
| 34 | + |
| 35 | +ENV MMS_HOME=/mongodb-ops-manager |
| 36 | +ENV MMS_PROP_FILE=${MMS_HOME}/conf/conf-mms.properties |
| 37 | +ENV MMS_CONF_FILE=${MMS_HOME}/conf/mms.conf |
| 38 | +ENV MMS_LOG_DIR=${MMS_HOME}/logs |
| 39 | +ENV MMS_TMP_DIR=${MMS_HOME}/tmp |
| 40 | + |
| 41 | +EXPOSE 8080 |
| 42 | + |
| 43 | +# OpsManager docker image needs to have the MongoDB dependencies because the |
| 44 | +# backup daemon is running its database locally |
| 45 | + |
| 46 | +# Replace libcurl-minimal and curl-minimal with the full versions |
| 47 | +# https://bugzilla.redhat.com/show_bug.cgi?id=1994521 |
| 48 | +RUN microdnf install -y libssh libpsl libbrotli \ |
| 49 | + && microdnf download curl libcurl \ |
| 50 | + && rpm -Uvh --nodeps --replacefiles "*curl*$( uname -i ).rpm" \ |
| 51 | + && microdnf remove -y libcurl-minimal curl-minimal |
| 52 | + |
| 53 | +RUN microdnf install --disableplugin=subscription-manager -y \ |
| 54 | + cyrus-sasl \ |
| 55 | + cyrus-sasl-gssapi \ |
| 56 | + cyrus-sasl-plain \ |
| 57 | + krb5-libs \ |
| 58 | + libpcap \ |
| 59 | + lm_sensors-libs \ |
| 60 | + net-snmp \ |
| 61 | + net-snmp-agent-libs \ |
| 62 | + openldap \ |
| 63 | + openssl \ |
| 64 | + tar \ |
| 65 | + rpm-libs \ |
| 66 | + net-tools \ |
| 67 | + procps-ng \ |
| 68 | + ncurses |
| 69 | + |
| 70 | +COPY --from=base /data/licenses /licenses/ |
| 71 | +COPY --from=base /data/scripts /opt/scripts |
| 72 | + |
| 73 | +RUN curl --fail -L -o ops_manager.tar.gz ${om_download_url} \ |
| 74 | + && tar -xzf ops_manager.tar.gz \ |
| 75 | + && rm ops_manager.tar.gz \ |
| 76 | + && mv mongodb-mms* "${MMS_HOME}" |
| 77 | + |
| 78 | +# permissions |
| 79 | +RUN chmod -R 0777 "${MMS_LOG_DIR}" \ |
| 80 | + && chmod -R 0777 "${MMS_TMP_DIR}" \ |
| 81 | + && chmod -R 0775 "${MMS_HOME}/conf" \ |
| 82 | + && chmod -R 0775 "${MMS_HOME}/jdk" \ |
| 83 | + && mkdir "${MMS_HOME}/mongodb-releases/" \ |
| 84 | + && chmod -R 0775 "${MMS_HOME}/mongodb-releases" \ |
| 85 | + && chmod -R 0777 "${MMS_CONF_FILE}" \ |
| 86 | + && chmod -R 0777 "${MMS_PROP_FILE}" |
| 87 | + |
| 88 | +# The "${MMS_HOME}/conf" will be populated by the docker-entry-point.sh. |
| 89 | +# For now we need to move into the templates directory. |
| 90 | +RUN cp -r "${MMS_HOME}/conf" "${MMS_HOME}/conf-template" |
| 91 | + |
| 92 | +USER 2000 |
| 93 | + |
| 94 | +# operator to change the entrypoint to: /mongodb-ops-manager/bin/mongodb-mms start_mms (or a wrapper around this) |
| 95 | +ENTRYPOINT [ "sleep infinity" ] |
0 commit comments