diff --git a/Dockerfile b/Dockerfile index 28206b0e..a1e806e0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,39 @@ +FROM opensuse/tumbleweed:latest as builder + +RUN zypper -n install --no-recommends git go1.18 &&\ + zypper -n install -t pattern devel_basis + +# now build the warewulf +COPY . /warewulf-src + +RUN cd /warewulf-src &&\ + make contclean &&\ + make genconfig \ + PREFIX=/usr \ + BINDIRa=/usr/bin \ + SYSCONFDIR=/etc \ + DATADIR=/usr/share \ + LOCALSTATEDIR=/var/lib \ + SHAREDSTATEDIR=/var/lib \ + MANDIR=/usr/share/man \ + INFODIR=/usr/share/info \ + DOCDIR=/usr/share/doc \ + SRVDIR=/var/lib \ + TFTPDIR=/srv/tftpboot \ + SYSTEMDDIR=/usr/lib/systemd/system \ + BASHCOMPDIR=/etc/bash_completion.d/ \ + FIREWALLDDIR=/usr/lib/firewalld/services \ + WWCLIENTDIR=/warewulf &&\ + make lint &&\ + make &&\ + make install + +# now all again but just the bare install for running the stuff FROM opensuse/tumbleweed:latest LABEL Description="Warewulf Base Container" LABEL maintainer="Christian Goll " - RUN zypper -n install --no-recommends \ cpio \ gzip \ @@ -20,7 +50,25 @@ RUN zypper -n install --no-recommends \ zypper -n install -t pattern devel_basis && \ zypper clean -a && \ systemctl enable dhcpd && \ - systemctl enable tftp.socket + systemctl enable tftp.socket &&\ + 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 && \ + mkdir -p /container && \ + cp -vr container-scripts/label-* \ + container-scripts/wwctl \ + container-scripts/warewulf.service \ + /container &&\ + mkdir -p /usr/share/bash-completion/completions/ &&\ + cp -v /etc/bash_completion.d/warewulf /usr/share/bash-completion/completions/wwctl &&\ + mv -v container-scripts/ww4-config.service /etc/systemd/system/ &&\ + systemctl enable ww4-config # now build the warewulf COPY . /warewulf-src @@ -60,12 +108,24 @@ RUN cd /warewulf-src &&\ container-scripts/wwctl \ container-scripts/warewulf.service \ /container &&\ + mkdir -p /usr/share/bash-completion/completions/ &&\ + cp -v /etc/bash_completion.d/warewulf /usr/share/bash-completion/completions/wwctl &&\ mv -v container-scripts/ww4-config.service /etc/systemd/system/ &&\ systemctl enable ww4-config -# cleanup container -RUN zypper rm -yu go &&\ - rm -rf /warewulf-src + + + +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}" + +