docker-compose -f docker-compose.prod.yaml --env-file .env.prod up --build
docker-compose -f docker-compose.prod.yaml --env-file .env.prod up
Por defecto, docker-compose usa el archivo .env por lo que si quieren se puede cambiar
| version: '3' | |
| services: | |
| pokedexapp: | |
| depends_on: | |
| - db | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| image: pokedex-docker | |
| container_name: pokedexapp | |
| restart: always # reiniciar el contenedor si se detiene | |
| ports: | |
| - "${PORT}:${PORT}" | |
| # working_dir: /var/www/pokedex | |
| environment: | |
| MONGODB: ${MONGODB} | |
| PORT: ${PORT} | |
| DEFAULT_LIMIT: ${DEFAULT_LIMIT} | |
| # volumes: | |
| # - ./:/var/www/pokedex | |
| db: | |
| image: mongo:5 | |
| container_name: mongo-poke | |
| restart: always | |
| ports: | |
| - 27017:27017 | |
| environment: | |
| MONGODB_DATABASE: nest-pokemon | |
| # volumes: | |
| # - ./mongo:/data/db |
| # Install dependencies only when needed | |
| FROM node:18-alpine3.15 AS deps | |
| # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. | |
| RUN apk add --no-cache libc6-compat | |
| WORKDIR /app | |
| COPY package.json yarn.lock ./ | |
| RUN yarn install --frozen-lockfile | |
| # Build the app with cache dependencies | |
| FROM node:18-alpine3.15 AS builder | |
| WORKDIR /app | |
| COPY --from=deps /app/node_modules ./node_modules | |
| COPY . . | |
| RUN yarn build | |
| # Production image, copy all the files and run next | |
| FROM node:18-alpine3.15 AS runner | |
| # Set working directory | |
| WORKDIR /usr/src/app | |
| COPY package.json yarn.lock ./ | |
| RUN yarn install --prod | |
| COPY --from=builder /app/dist ./dist | |
| # # Copiar el directorio y su contenido | |
| # RUN mkdir -p ./pokedex | |
| # COPY --from=builder ./app/dist/ ./app | |
| # COPY ./.env ./app/.env | |
| # # Dar permiso para ejecutar la applicación | |
| # RUN adduser --disabled-password pokeuser | |
| # RUN chown -R pokeuser:pokeuser ./pokedex | |
| # USER pokeuser | |
| # EXPOSE 3000 | |
| CMD [ "node","dist/main" ] |
| FROM node:18-alpine3.15 | |
| # Set working directory | |
| RUN mkdir -p /var/www/pokedex | |
| WORKDIR /var/www/pokedex | |
| # Copiar el directorio y su contenido | |
| COPY . ./var/www/pokedex | |
| COPY package.json tsconfig.json tsconfig.build.json /var/www/pokedex/ | |
| RUN yarn install --prod | |
| RUN yarn build | |
| # Dar permiso para ejecutar la applicación | |
| RUN adduser --disabled-password pokeuser | |
| RUN chown -R pokeuser:pokeuser /var/www/pokedex | |
| USER pokeuser | |
| # Limpiar el caché | |
| RUN yarn cache clean --force | |
| EXPOSE 3000 | |
| CMD [ "yarn","start" ] |
nice
Gracias por la buena información. ¿Algún curso de docker que recomiendes?
El tiene uno de docker
Excelente, muchas gracias! Sólo una nota, toca cambiar la versión de node en el Dockerfile para que se ejecute con las versiones más recientes de Node.
Saludos!
Este gist me ha salvado en muchas, gracias Fernando por el contenido de calidad.
Obtengo un error:
RUN apk add --no-cache libc6-compat
[+] Running 0/11: apk: not found
Obtengo un error: docker-compose -f docker-compose.prod.yaml --env-file .env.prod up --build
Dockerfile:7
5 | WORKDIR /app
6 | COPY package.json yarn.lock ./
7 | >>> RUN yarn install --frozen-lockfile
8 |
9 | # Build the app with cache dependencies
failed to solve: process "/bin/sh -c yarn install --frozen-lockfile" did not complete successfully: exit code: 1
Si tienen problemas al correr el primer comando, solo actualicen la imagen del alpine al 20 en el archivo de Dockerfile @PR0C3S:
FROM node:20-alpine
Gracias por la buena información.
¿Algún curso de docker que recomiendes?