From 4a69d64f28184da21182feb5ba2d601f4d164fe9 Mon Sep 17 00:00:00 2001 From: Ben Date: Wed, 12 Mar 2025 08:26:49 -0500 Subject: [PATCH] Adjust CI pipeline. --- .dockerignore | 5 +++++ .woodpecker.yml | 2 +- docker/Dockerfile | 24 +++++++++++++----------- 3 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..958b26c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +node_modules +.git +.gitignore +*.md +dist \ No newline at end of file diff --git a/.woodpecker.yml b/.woodpecker.yml index f973be8..8a68a36 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -37,7 +37,7 @@ steps: - echo "$REGISTRY_PASSWORD" | docker login registry.binderlab.io --username "$REGISTRY_USERNAME" --password-stdin - docker pull registry.binderlab.io/harbormaster-client:latest - docker create --name temp-harbormaster-client registry.binderlab.io/harbormaster-client:latest - - docker cp temp-harbormaster-client:/build $DEPLOY_PATH + - docker cp temp-harbormaster-client:/app/build $DEPLOY_PATH - docker rm temp-harbormaster-client when: event: manual \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 17775b4..948a199 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,23 +1,25 @@ -FROM node:18-alpine AS builder - -# Set working directory +FROM node:20-slim AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable +COPY . /app WORKDIR /app -# Copy package.json and install dependencies -COPY package.json pnpm-lock.yaml ./ -RUN npm ci +FROM base AS prod-deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile -# Copy the rest of the app and build -COPY . . -RUN npm run build +FROM base AS build +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm run build # Stage 2: Minimal image for exporting build artifacts FROM alpine:latest # Set working directory for output -WORKDIR /output +WORKDIR /app # Copy the built files from the builder stage -COPY --from=builder /app/build . +COPY --from=prod-deps /app/node_modules /app/node_modules +COPY --from=build /app/build . # No CMD because this image is just used to extract build files \ No newline at end of file