Dockerfile multistage
This commit is contained in:
20
Dockerfile
20
Dockerfile
@ -1,21 +1,15 @@
|
|||||||
# Use Node.js 24 slim image
|
FROM node:24-slim AS builder
|
||||||
FROM node:24-slim
|
|
||||||
|
|
||||||
# Set working directory
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Install dependencies first (for better caching)
|
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
# Copy the rest of the code
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Build project (for production)
|
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Expose port if needed (optional, e.g., 3000)
|
FROM node:24-slim AS production
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install --production
|
||||||
|
COPY --from=builder /app/dist ./dist
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
# Run app in production mode
|
|
||||||
CMD ["node", "dist/index.js"]
|
CMD ["node", "dist/index.js"]
|
||||||
|
|
||||||
|
43
README.md
43
README.md
@ -16,3 +16,46 @@
|
|||||||
- [#2 PR : feat/database_and_feed_model ](https://github.com/aabril/dailytrends/pull/2)
|
- [#2 PR : feat/database_and_feed_model ](https://github.com/aabril/dailytrends/pull/2)
|
||||||
- Añadimos `moongose` a las dependencias
|
- Añadimos `moongose` a las dependencias
|
||||||
- Añado un docker-compose con mongo local (luego lo ampliaré para esta propia app)
|
- Añado un docker-compose con mongo local (luego lo ampliaré para esta propia app)
|
||||||
|
|
||||||
|
|
||||||
|
## Dockerfile simple to multistage
|
||||||
|
|
||||||
|
I rebuild the Dockerfile to be multistage, since the image was heavy because all the node_modules dependencies.
|
||||||
|
The size of the image has been reduced from 717Mb to 376.
|
||||||
|
|
||||||
|
dailytrends-app-legacy latest 96a2dfe15361 3 minutes ago 717MB
|
||||||
|
dailytrends-app-light latest 7436142e1301 3 seconds ago 376MB
|
||||||
|
|
||||||
|
|
||||||
|
###### legacy
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
FROM node:24-slim
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build
|
||||||
|
EXPOSE 3000
|
||||||
|
CMD ["node", "dist/index.js"]
|
||||||
|
```
|
||||||
|
|
||||||
|
###### light
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
FROM node:24-slim AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install
|
||||||
|
COPY . .
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
FROM node:24-slim AS production
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install --production
|
||||||
|
COPY --from=builder /app/dist ./dist
|
||||||
|
EXPOSE 3000
|
||||||
|
CMD ["node", "dist/index.js"]
|
||||||
|
|
||||||
|
```
|
Reference in New Issue
Block a user