link-stack/apps/leafcutter/Dockerfile
Darren Clarke 7745071e63 fix: Update Dockerfiles to copy entire app directory for package dependencies
Changed Dockerfiles for bridge-frontend, link, and leafcutter to copy
the entire installer directory instead of selective copying. This ensures
all workspace packages (including @link-stack/logger) are available at
runtime, fixing the 'Cannot find package' error in Docker containers.
2025-08-20 12:58:03 +02:00

49 lines
1.3 KiB
Docker

FROM node:22-bookworm-slim AS base
FROM base AS builder
ARG APP_DIR=/opt/leafcutter
RUN mkdir -p ${APP_DIR}/
RUN npm i -g turbo
WORKDIR ${APP_DIR}
COPY . .
RUN turbo prune --scope=@link-stack/leafcutter --docker
FROM base AS installer
ARG APP_DIR=/opt/leafcutter
WORKDIR ${APP_DIR}
COPY --from=builder ${APP_DIR}/.gitignore .gitignore
COPY --from=builder ${APP_DIR}/out/json/ .
COPY --from=builder ${APP_DIR}/out/package-lock.json ./package-lock.json
RUN npm ci
COPY --from=builder ${APP_DIR}/out/full/ .
ARG LINK_EMBEDDED=true
RUN npm i -g turbo
RUN turbo run build --filter=@link-stack/leafcutter
FROM base AS runner
ARG APP_DIR=/opt/leafcutter
WORKDIR ${APP_DIR}/
ARG BUILD_DATE
ARG VERSION
LABEL maintainer="Darren Clarke <darren@redaranj.com>"
LABEL org.label-schema.build-date=$BUILD_DATE
LABEL org.label-schema.version=$VERSION
ENV APP_DIR ${APP_DIR}
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
apt-get install -y --no-install-recommends \
dumb-init
RUN mkdir -p ${APP_DIR}
RUN chown -R node ${APP_DIR}/
USER node
WORKDIR ${APP_DIR}
COPY --from=installer ${APP_DIR} ./
USER root
WORKDIR ${APP_DIR}/apps/leafcutter/
RUN chmod +x docker-entrypoint.sh
USER node
EXPOSE 3000
ENV PORT 3000
ENV NODE_ENV production
ENTRYPOINT ["/opt/leafcutter/apps/leafcutter/docker-entrypoint.sh"]