FROM node:20-alpine3.18 AS base ## Installing libvips-dev for sharp Compatibility ## (only necessary for alpine docker images) RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash vips-dev git RUN corepack enable && corepack prepare pnpm@9.5.0 --activate ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" ARG NODE_ENV=development ENV NODE_ENV=${NODE_ENV} EXPOSE 1339 ENTRYPOINT ["pnpm"] FROM base AS build WORKDIR /app RUN mkdir -p /prod/strapi COPY pnpm-workspace.yaml pnpm-lock.yaml .npmrc package.json . COPY ./packages/types ./packages/types COPY ./packages/strapi ./packages/strapi RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm fetch # Do I need node-gyp? RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install -g node-gyp --prefer-offline RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --recursive --prefer-offline RUN pnpm -r build RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm deploy --filter=strapi /prod/strapi RUN ls -lah ./ RUN ls -lah ./packages RUN ls -lah ./packages/strapi RUN ls -lah /prod/strapi # FROM base AS build # RUN mkdir -p /prod/strapi # WORKDIR /opt/ # COPY ./packages/strapi/package.json ./packages/strapi/pnpm-lock.yaml ./ # RUN pnpm fetch # RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install -g node-gyp # RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile # ENV PATH /opt/node_modules/.bin:$PATH # WORKDIR /opt/app # COPY ./packages/strapi/. . # RUN pnpm -r build # RUN pnpm deploy --filter=strapi /prod/strapi FROM base AS dev COPY --from=build /prod/strapi . CMD ["run", "develop"] FROM base AS strapi WORKDIR /opt/app RUN chown -R node:node /opt/app USER node COPY --from=build /prod/strapi . RUN ls -la . CMD ["start"]