diff --git a/Dockerfile b/Dockerfile index db61cb4..49e9329 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,24 @@ -FROM node:22-slim -RUN apt update \ - && apt --no-install-recommends install -y curl \ - && apt clean +# Our first stage, that is the Builder +FROM node:22-slim AS thumbnail-api-builder WORKDIR /opt/thumbnail-api COPY src /opt/thumbnail-api/src COPY package.json /opt/thumbnail-api COPY package-lock.json /opt/thumbnail-api COPY tsconfig.json /opt/thumbnail-api COPY eslint.config.mjs /opt/thumbnail-api +RUN npm install --ignore-scripts && npm run clean && npm run build + +FROM node:22-slim AS thumbnail-api-prod +RUN apt update \ + && apt --no-install-recommends install -y curl \ + && apt clean +WORKDIR /opt/thumbnail-api +COPY package.json . +COPY package-lock.json . +COPY --from=thumbnail-api-builder /opt/thumbnail-api/dist /opt/thumbnail-api/dist RUN chown -R node:node /opt/thumbnail-api USER node EXPOSE 3000 HEALTHCHECK CMD ["curl", "-f", "http://localhost:3000/health"] -RUN npm run clean \ - && npm ci --ignore-scripts \ - && npm run build +RUN npm install --omit=dev --omit=optional --ignore-scripts CMD ["npm", "run", "start", "-s"] diff --git a/package.json b/package.json index 16f7f8b..b59f0b9 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "build": "tsc", - "clean": "rm -r dist thumbnail-api.zip 2> /dev/null ; exit 0", + "clean": "rm -r dist 2> /dev/null ; exit 0", "start": "node dist/src/main.js", "lint": "npx eslint", "format": "prettier --ignore-path .gitignore --write \"**/*.+(js|ts|json)\"",