# # Static site build phase # FROM docker.io/node:24 as build ARG SITE WORKDIR /build COPY package.json package-lock.json . RUN --mount=type=cache,target=/root/.npm \ npm clean-install --omit=dev COPY styles/ styles/ RUN npm run build:styles COPY eleventy.config.mjs . COPY assets assets/ COPY includes includes/ COPY sites/${SITE} sites/${SITE}/ # These are symlinked from other sites: COPY sites/angestoepselt/_images/home-banner.jpg /build/sites/angestoepselt/_images/ RUN SITE=${SITE} npm run build:site # # Actual server container # FROM docker.io/library/alpine:latest ARG SITE RUN apk add --no-cache lighttpd && \ apk add --no-cache python3 py3-requests py3-itsdangerous py3-magic RUN --mount=type=cache,target=/root/.cache/pip \ apk add --no-cache py3-pip && \ python3 -m pip install legacy-cgi --break-system-packages && \ apk del py3-pip COPY --from=build /build/dist /www/ COPY cgi-bin /cgi-bin/ COPY sites/${SITE}/httpd.conf /httpd.conf COPY sites/${SITE}/_data/config.json /config.json RUN sed -i \ -e "s,@python@,/usr/bin/python3,g" \ -e "s,@site@,/www,g" \ -e "s,@cgibin@,/cgi-bin,g" \ /httpd.conf EXPOSE 80/tcp # Note: these are just those environment variables that have a default variable # and are optional, the non optional ones *will* need to be set by the user. ENV ZAMMAD_URL=https://ticket.z31.it ENV ZAMMAD_GROUP="" HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD curl -sSf http://127.0.0.1/ > /dev/null || exit 1 # Reroute stdout to a new file descriptor so that Lighttpd can use it as the # access log. See http.conf and here: # https://redmine.lighttpd.net/boards/2/topics/8382 ENTRYPOINT exec 3>&1 && /usr/sbin/lighttpd -Df /httpd.conf