diff --git a/api/Dockerfile b/api/Dockerfile index cf83c89..99f2d40 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,31 +1,27 @@ -FROM node:22 AS development -WORKDIR /api/src +# -------- BUILD -------- +FROM node:22 AS build +WORKDIR /app + COPY package*.json ./ -RUN npm install +RUN npm ci COPY . . RUN npm run build -################ -## PRODUCTION ## -################ -# Build another image named production -FROM node:22 AS production +# -------- PROD DEPS (nur prod node_modules) -------- +FROM node:22 AS deps +WORKDIR /app -# Set node env to prod -ARG NODE_ENV=production -ENV NODE_ENV=${NODE_ENV} +COPY package*.json ./ +RUN npm ci --omit=dev && npm cache clean --force -# Set Working Directory -WORKDIR /api/src +# -------- RUNTIME -------- +FROM node:22-slim AS runtime +ENV NODE_ENV=production +WORKDIR /app -# Copy all from development stage -COPY --from=development /api/src/ . +COPY --from=deps /app/node_modules ./node_modules +COPY --from=build /app/dist ./dist +COPY package*.json ./ EXPOSE 4000 - -# Run app -CMD [ "node", "dist/src/main" ] - -# Example Commands to build and run the dockerfile -# docker build -t thomas-nest . -# docker run thomas-nest \ No newline at end of file +CMD ["node", "dist/src/main"] \ No newline at end of file