add docker build and push workflow

This commit is contained in:
mxmlndml
2023-08-28 14:32:13 +02:00
parent a5880ee555
commit 45b7040196
6 changed files with 131 additions and 33 deletions

View File

@@ -1,28 +1,18 @@
FROM node:alpine AS base
# add pnpm
FROM node:slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="${PNPM_HOME}:${PATH}"
RUN corepack enable
RUN corepack prepare pnpm@latest --activate
FROM base as deps
COPY . /app
WORKDIR /app
# install dependencies with pnpm
COPY package.json pnpm-lock.yaml* ./
RUN pnpm i --frozen-lockfile
FROM base as prod-deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
FROM base as builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN pnpm build
FROM base AS build
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
RUN pnpm run build
FROM base as runner
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
USER node
CMD ["node", "./dist/index.js"]
FROM base
COPY --from=prod-deps /app/node_modules /app/node_modules
COPY --from=build /app/dist /app/dist
CMD [ "pnpm", "start" ]