mirror of
https://github.com/plankanban/planka.git
synced 2025-12-25 09:15:00 +03:00
build: Refine server build steps
This commit is contained in:
31
Dockerfile
31
Dockerfile
@@ -1,16 +1,19 @@
|
||||
FROM node:22-alpine AS server-dependencies
|
||||
# Stage 1: Server build
|
||||
FROM node:22-alpine AS server
|
||||
|
||||
RUN apk -U upgrade \
|
||||
&& apk add build-base python3 --no-cache
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY server/package.json server/package-lock.json server/requirements.txt ./
|
||||
COPY server/patches ./patches
|
||||
COPY server .
|
||||
|
||||
RUN npm install npm --global \
|
||||
&& npm install --omit=dev
|
||||
&& npm install \
|
||||
&& npm run build \
|
||||
&& npm prune --production
|
||||
|
||||
# Stage 2: Client build
|
||||
FROM node:22 AS client
|
||||
|
||||
WORKDIR /app
|
||||
@@ -18,10 +21,10 @@ WORKDIR /app
|
||||
COPY client .
|
||||
|
||||
RUN npm install npm --global \
|
||||
&& npm install --omit=dev
|
||||
|
||||
RUN DISABLE_ESLINT_PLUGIN=true npm run build
|
||||
&& npm install --omit=dev \
|
||||
&& DISABLE_ESLINT_PLUGIN=true npm run build
|
||||
|
||||
# Stage 3: Final image
|
||||
FROM node:22-alpine
|
||||
|
||||
RUN apk -U upgrade \
|
||||
@@ -31,18 +34,20 @@ RUN apk -U upgrade \
|
||||
USER node
|
||||
WORKDIR /app
|
||||
|
||||
COPY --chown=node:node server .
|
||||
COPY --chown=node:node LICENSE.md .
|
||||
COPY --chown=node:node ["LICENSES/PLANKA Community License DE.md", "LICENSE_DE.md"]
|
||||
|
||||
COPY --from=server --chown=node:node /app/node_modules node_modules
|
||||
COPY --from=server --chown=node:node /app/dist .
|
||||
|
||||
COPY --from=client --chown=node:node /app/dist public
|
||||
COPY --from=client --chown=node:node /app/dist/index.html views
|
||||
|
||||
RUN python3 -m venv .venv \
|
||||
&& .venv/bin/pip3 install -r requirements.txt --no-cache-dir \
|
||||
&& mv .env.sample .env \
|
||||
&& npm config set update-notifier false
|
||||
|
||||
COPY --from=server-dependencies --chown=node:node /app/node_modules node_modules
|
||||
|
||||
COPY --from=client --chown=node:node /app/dist public
|
||||
COPY --from=client --chown=node:node /app/dist/index.html views
|
||||
|
||||
VOLUME /app/public/favicons
|
||||
VOLUME /app/public/user-avatars
|
||||
VOLUME /app/public/background-images
|
||||
|
||||
Reference in New Issue
Block a user