41 lines
1.2 KiB
Docker
41 lines
1.2 KiB
Docker
FROM node:22.2.0-alpine AS client-builder
|
|
|
|
COPY picture-gallery-client/package*.json /usr/src/app/picture-gallery-client/
|
|
WORKDIR /usr/src/app/picture-gallery-client
|
|
RUN npm ci --only=production
|
|
COPY picture-gallery-client .
|
|
RUN npm run client:build
|
|
|
|
RUN mkdir built && \
|
|
mv build built && \
|
|
mv package.minimize.docker.json built/package.json && \
|
|
cp package-lock.json built && \
|
|
cp .env.example built && \
|
|
cp .env built && \
|
|
npm ci --prefix ./built --only=production
|
|
|
|
FROM node:22.2.0-alpine AS server-builder
|
|
|
|
COPY picture-gallery-server/package*.json /usr/src/app/picture-gallery-server/
|
|
WORKDIR /usr/src/app/picture-gallery-server
|
|
RUN npm ci
|
|
COPY picture-gallery-server .
|
|
RUN npm run server:build
|
|
|
|
RUN mkdir built && \
|
|
mv dist node_modules built
|
|
|
|
FROM node:22.2.0-alpine
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
COPY --from=client-builder --chown=node:node /usr/src/app/picture-gallery-client/built /usr/src/app/picture-gallery-client/
|
|
COPY --from=server-builder --chown=node:node /usr/src/app/picture-gallery-server/built /usr/src/app/picture-gallery-server/
|
|
|
|
VOLUME /usr/src/app/public
|
|
EXPOSE 3001
|
|
|
|
USER node
|
|
WORKDIR /usr/src/app/picture-gallery-server
|
|
CMD npm run --prefix ../picture-gallery-client/ set-environment && node dist/app.js
|