# syntax=docker/dockerfile:1 FROM ghcr.io/linuxserver/baseimage-alpine:3.23 AS buildstage # set version label ARG PLANKA_RELEASE RUN \ echo "**** install packages ****" && \ apk add --no-cache --virtual=build-dependencies \ build-base \ giflib \ libgsf \ nodejs \ npm \ py3-setuptools \ python3-dev \ vips && \ echo "**** install planka ****" && \ if [ -z ${PLANKA_RELEASE+x} ]; then \ PLANKA_RELEASE=$(curl -s https://api.github.com/repos/plankanban/planka/releases/latest \ | awk '/tag_name/{print $4;exit}' FS='[""]'); \ fi && \ mkdir -p /build && \ curl -o \ /tmp/planka.tar.gz -L \ "https://github.com/plankanban/planka/archive/${PLANKA_RELEASE}.tar.gz" && \ tar xf \ /tmp/planka.tar.gz -C \ /build --strip-components=1 && \ cd /build/server && \ npm install --omit=dev && \ cd /build/client && \ npm install --omit=dev && \ DISABLE_ESLINT_PLUGIN=true npm run build && \ echo "**** cleanup ****" && \ apk del --purge \ build-dependencies && \ rm -rf \ $HOME/.cache \ $HOME/.local \ $HOME/.npm \ /tmp/* FROM ghcr.io/linuxserver/baseimage-alpine:3.23 ARG BUILD_DATE ARG VERSION ARG PLANKA_RELEASE LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="thespad" COPY --from=buildstage /build/server/ /app COPY --from=buildstage /build/server/.env.sample /app/.env COPY --from=buildstage /build/client/dist /app/public/ COPY --from=buildstage /build/client/dist/index.html /app/views RUN \ apk add --no-cache \ nodejs \ npm \ postgresql16-client && \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ echo "**** create symlinks ****" && \ /bin/bash -c \ 'dst=(favicons user-avatars background-images attachments logs); \ src=(public/favicons public/user-avatars public/background-images private/attachments logs); \ for i in "${!src[@]}"; do rm -rf /app/"${src[i]}" && ln -s /config/"${dst[i]}" /app/"${src[i]}"; done' # copy local files COPY root/ / # ports and volumes EXPOSE 1337 VOLUME /config