FROM node:22-bookworm-slim AS base FROM base AS builder ARG APP_DIR=/opt/link ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN mkdir -p ${APP_DIR}/ RUN corepack enable && corepack prepare pnpm@9.15.4 --activate RUN pnpm add -g turbo WORKDIR ${APP_DIR} COPY . . RUN turbo prune --scope=@link-stack/link --scope=@link-stack/bridge-migrations --docker FROM base AS installer ARG APP_DIR=/opt/link ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" WORKDIR ${APP_DIR} RUN corepack enable && corepack prepare pnpm@9.15.4 --activate COPY --from=builder ${APP_DIR}/.gitignore .gitignore COPY --from=builder ${APP_DIR}/out/json/ . COPY --from=builder ${APP_DIR}/out/pnpm-lock.yaml ./pnpm-lock.yaml RUN pnpm install --frozen-lockfile COPY --from=builder ${APP_DIR}/out/full/ . RUN pnpm add -g turbo ENV ZAMMAD_URL http://zammad-nginx:8080 RUN turbo run build --filter=@link-stack/link --filter=@link-stack/bridge-migrations FROM base AS runner ARG APP_DIR=/opt/link WORKDIR ${APP_DIR}/ ARG BUILD_DATE ARG VERSION LABEL maintainer="Darren Clarke " LABEL org.label-schema.build-date=$BUILD_DATE LABEL org.label-schema.version=$VERSION ENV APP_DIR ${APP_DIR} ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable && corepack prepare pnpm@9.15.4 --activate RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ apt-get install -y --no-install-recommends \ dumb-init RUN mkdir -p ${APP_DIR} /pnpm RUN chown -R node ${APP_DIR}/ /pnpm USER node RUN corepack prepare pnpm@9.15.4 --activate WORKDIR ${APP_DIR} COPY --from=installer ${APP_DIR} ./ USER root WORKDIR ${APP_DIR}/apps/link/ RUN chmod +x docker-entrypoint.sh USER node EXPOSE 3000 ENV PORT 3000 ENV NODE_ENV production ENTRYPOINT ["/opt/link/apps/link/docker-entrypoint.sh"]