File Dockerfile of Package server-image

# SPDX-License-Identifier: MIT
#!BuildTag: uyuni/server:2025.07 uyuni/server:2025.07.%RELEASE% uyuni/server:latest

ARG INIT_IMAGE=uyuni/init:latest
FROM $INIT_IMAGE

ARG PRODUCT_PATTERN_PREFIX="patterns-uyuni"

# Keep in sync with salt/salt.spec
# For now Uyuni is still on python3-salt but the value can be overridden in the project config
ARG USEPYTHON="python3"

# Extra packages can be added via project configuration
ARG EXTRAPACKAGES

# Main packages
RUN echo "rpm.install.excludedocs = yes" >>/etc/zypp/zypp.conf && \
    zypper ref && zypper --non-interactive up && \
    zypper --gpg-auto-import-keys --non-interactive install --auto-agree-with-licenses --force-resolution \
        ${EXTRAPACKAGES} \
        ${PRODUCT_PATTERN_PREFIX}_server \
        ${PRODUCT_PATTERN_PREFIX}_retail \
        ${USEPYTHON}-pygit2 \
        ${USEPYTHON}-ldap \
        billing-data-service \
        drbd-formula \
        ed \
        golang-github-QubitProducts-exporter_exporter \
        golang-github-prometheus-node_exporter \
        grafana-formula \
        grub2-arm64-efi \
        grub2-powerpc-ieee1275 \
        grub2-x86_64-efi \
        habootstrap-formula \
        inter-server-sync \
        ipmitool \
        javamail \
        locale-formula \
        postgresql16 \
        prometheus-exporters-formula \
        prometheus-formula \
        prometheus-jmx_exporter \
        prometheus-jmx_exporter-tomcat \
        prometheus-postgres_exporter \
        registry-formula \
        saline-formula \
        salt-shaptools \
        saphanabootstrap-formula \
        sapnwbootstrap-formula \
        spacecmd \
        spacewalk-backend-sql-postgresql \
        spacewalk-java-postgresql \
        sssd \
        sssd-ad \
        sssd-dbus \
        sssd-ipa \
        sssd-krb5 \
        sssd-ldap \
        sssd-tools \
        susemanager-tftpsync \
        uyuni-config-formula \
        vim \
        virtual-host-gatherer-Libvirt \
        virtual-host-gatherer-Nutanix \
        virtual-host-gatherer-VMware \
        virtual-host-gatherer-libcloud \
        virtualization-formulas \
        zchunk && \
    systemctl enable prometheus-node_exporter && \
    systemctl enable sssd && \
    rm /etc/krb5.conf.d/crypto-policies && \
    ln -s /etc/crypto-policies/back-ends/krb5.config /etc/krb5.conf.d/crypto-policies && \
    mv "/etc/krb5.conf.d" "/etc/rhn/krb5.conf.d" && \
    ln -s "/etc/rhn/krb5.conf.d" "/etc/krb5.conf.d"

RUN set -euo pipefail; zypper -n rr -a; \
    rm -rf /var/log/{alternatives.log,lastlog,tallylog,zypper.log,zypp/history,YaST2}

ADD --chown=root:root root.tar.gz /

# Initialize environments to sync configuration and package files to persistent volumes
RUN systemctl enable timezone_alignment && \
    uyuni-configfiles-sync init /etc/apache2/ && \
    uyuni-configfiles-sync init /etc/cobbler/ && \
    uyuni-configfiles-sync init /etc/postfix/ && \
    uyuni-configfiles-sync init /etc/rhn/ && \
    uyuni-configfiles-sync init /etc/salt/ && \
    uyuni-configfiles-sync init /etc/sysconfig/ && \
    uyuni-configfiles-sync init /etc/tomcat/ && \
    uyuni-configfiles-sync init /srv/tftpboot/ && \
    uyuni-configfiles-sync init /srv/www/ && \
    uyuni-configfiles-sync init /var/lib/cobbler/

# LABELs
ARG PRODUCT=Uyuni
ARG VENDOR="Uyuni project"
ARG URL="https://www.uyuni-project.org/"
ARG REFERENCE_PREFIX="registry.opensuse.org/uyuni"
ARG PRODUCT_VERSION="2025.07"

# Build Service required labels
# labelprefix=org.opensuse.uyuni.server
LABEL org.opencontainers.image.name=server-image
LABEL org.opencontainers.image.title="${PRODUCT} server container"
LABEL org.opencontainers.image.description="All-in-one ${PRODUCT} server image"
LABEL org.opencontainers.image.created="%BUILDTIME%"
LABEL org.opencontainers.image.vendor="${VENDOR}"
LABEL org.opencontainers.image.url="${URL}"
LABEL org.opencontainers.image.version=5.2.0
LABEL org.openbuildservice.disturl="%DISTURL%"
LABEL org.opensuse.reference="${REFERENCE_PREFIX}/server:${PRODUCT_VERSION}.%RELEASE%"
# endlabelprefix
LABEL org.uyuni.version="${PRODUCT_VERSION}"

CMD ["/usr/lib/systemd/systemd"]
HEALTHCHECK --interval=60s --timeout=120s --retries=5 --start-period=300s CMD ["/usr/bin/healthcheck.sh"]
openSUSE Build Service is sponsored by