File Dockerfile of Package warewulf-container

# Define the tags for OBS and build script builds:
#!BuildTag: suse/alp/workloads/warewulf:0.1
#!BuildTag: suse/alp/workloads/warewulf:0.1-%RELEASE%
#!BuildTag: suse/alp/workloads/warewulf:latest

#FROM bci/bci-init:latest
FROM opensuse/tumbleweed:latest

LABEL Description="Warewulf Base Container"
LABEL maintainer="Christian Goll <cgoll@suse.com>"

# Define labels according to https://en.opensuse.org/Building_derived_containers
# labelprefix=com.suse.alp.workloads.warewulf
LABEL org.opencontainers.image.title="Warewulf base container"
LABEL org.opencontainers.image.description="Container for Warewulf"
LABEL org.opencontainers.image.created="%BUILDTIME%"
LABEL org.opencontainers.image.version="0.1"
LABEL org.openbuildservice.disturl="%DISTURL%"
LABEL org.opensuse.reference="registry.opensuse.org/suse/alp/workloads/tumbleweed_containerfiles/suse/alp/workloads/warewulf:0.1-%RELEASE%"
LABEL com.suse.supportlevel="techpreview"
LABEL com.suse.eula="beta"
LABEL com.suse.image-type="application"
LABEL com.suse.release-stage="alpha"
# endlabelprefix


RUN zypper -n install \
  systemd \
  cpio \
  gzip \
  pigz \
  rsync \
  iproute \
  openssh-clients \
  less \
  warewulf4 && \
  zypper clean -a && \
  systemctl enable dhcpd && \
  systemctl enable tftp.socket && \
  systemctl enable warewulfd

# Our dhcpd will listen on ANY interface, limits will be handled by container runtime
RUN export DHCPDCONF=/etc/sysconfig/dhcpd; test -e $DHCPDCONF && \ 
	sed -i 's/^DHCPD_INTERFACE=""/DHCPD_INTERFACE="ANY"/' $DHCPDCONF && \
	sed -i 's/^DHCPD_RUN_CHROOTED="yes"/DHCPD_RUN_CHROOTED="no"/' $DHCPDCONF && \
  WW4CONF=/etc/warewulf/warewulf.conf; test -e $WW4CONF && \
  sed -i 's/^ipaddr:.*/ipaddr: EMPTY/' $WW4CONF && \
  sed -i 's/^netmask:.*/netmask: EMPTY/' $WW4CONF && \
  sed -i 's/^network:.*/network: EMPTY/' $WW4CONF && \
  sed -i 's/^  range start:.*/  range start: EMPTY/' $WW4CONF && \
  sed -i 's/^  range end:.*/  range end: EMPTY/' $WW4CONF 


# We need the configs on the host as these files are quite important
RUN mkdir -p /container/warewulf &&  cp -rv /etc/warewulf/* /container/warewulf 
COPY warewulf.service \
 warewulf-container-manage.sh \
 wwctl \
 label-install \
 label-uninstall \
 label-purge \
 warewulf-container.conf \
 /container

# Add a service which will create a porper config on the startup
COPY ww4-config.service \
  /etc/systemd/system/

RUN systemctl enable ww4-config
 

RUN chmod +x \
  /container/wwctl \
  /container/warewulf-container-manage.sh \
  /container/label-*

# need systemd for tftp and dhcpd
#ENTRYPOINT [ "/container/label-run" ]
CMD  [ "/usr/sbin/init" ]

#EXPOSE 67/udp 68/udp 69/udp 9873

LABEL INSTALL="/usr/bin/docker run --env IMAGE=IMAGE --rm --privileged -v /:/host IMAGE /bin/bash /container/label-install"
LABEL UNINSTALL="/usr/bin/docker run --rm --privileged -v /:/host IMAGE /bin/bash /container/label-uninstall"
LABEL PURGE="/usr/bin/docker run -ti --rm --privileged -v /:/host IMAGE /bin/bash /container/label-purge"
LABEL RUN="/usr/bin/docker run -d --replace --name \${NAME} --privileged --net=host -v /:/host -v /etc/warewulf:/etc/warewulf -v /var/lib/warewulf/:/var/lib/warewulf/ -e NAME=\${NAME} -e IMAGE=\${IMAGE} \${IMAGE}"
openSUSE Build Service is sponsored by