Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test/pkg #22

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 44 additions & 10 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,41 +1,75 @@
# COMMANDS
# docker build . -t <user-docker>/<app-name>
# docker build -t <user-docker>/<app-name> .
# docker run -d -p 8080:8080 --name <container-name> --env-file <.env> <user-docker>/<app-name>

# EXAMPLES

# Standar build
# docker build -t nestjs-starter .
# docker run -d -p 8080:8080 --name nestjs-starter-app--env-file .env nestjs-starter

# Build with ARG
# docker build --build-arg NODE_VERSION=14.18.1 --build-arg APP_PORT=3000 --build-arg IMAGE_NAME=my-nestjs-app -t mi-imagen .

# Run
# docker run -d -p 8080:8080 --name nestjs-starter-app --env-file .env nestjs-starter
# docker run -it -p 8080:8080 --name nestjs-starter-app --env-file .env nestjs-starter
# docker system prune

#docker run -it --rm --entrypoint=sh nestjs-starter

FROM node:16.14.2-alpine as builder

ARG NODE_VERSION=16.14.2
ARG NODE_ENV=build
ARG APP_PORT=8080
ARG IMAGE_NAME=nestjs-starter

# Utiliza una versión ligera de Node.js como imagen base
FROM node:${NODE_VERSION}-alpine as builder
# Establece la variable de entorno NODE_ENV a partir del ARG
ENV NODE_ENV=${NODE_ENV}

# Define el directorio de trabajo en el contenedor
WORKDIR /usr/src/app

# Copia los archivos package.json y yarn.lock al contenedor
COPY package*.json ./
COPY yarn.lock ./

RUN yarn install
# Instala las dependencias del proyecto utilizando Yarn
# --frozen-lockfile asegura que las versiones de las dependencias sean las mismas en todos los entornos
RUN yarn install --frozen-lockfile

# Copia el resto del código del proyecto al contenedor
COPY . .

# Construye la aplicación
RUN yarn build

# ---

FROM node:16.14.2-alpine
LABEL name=nestjs-starter
# Comienza una nueva etapa para reducir el tamaño de la imagen final
FROM node:${NODE_VERSION}-alpine
# Información sobre la imagen, con el valor de la etiqueta name parametrizado
LABEL name=${IMAGE_NAME}

# Define un usuario sin privilegios para ejecutar la aplicación
USER node
# Define el directorio de trabajo en el contenedor
WORKDIR /usr/src/app

COPY --from=builder /usr/src/app/package*.json ./
# Copia los archivos package.json y yarn.lock desde la etapa de construcción
COPY --from=builder /usr/src/app/package.json ./
COPY --from=builder /usr/src/app/yarn.lock ./
# Copia el directorio node_modules desde la etapa de construcción
COPY --from=builder /usr/src/app/node_modules/ ./node_modules/
# Copia el directorio dist (donde se almacena la aplicación construida) desde la etapa de construcción
COPY --from=builder /usr/src/app/dist ./dist

EXPOSE 8080
ENTRYPOINT ["yarn", "start"]
# Expone el puerto que usa la aplicación
EXPOSE ${APP_PORT}
# Define el comando para iniciar la aplicación
CMD ["yarn", "start"]

# Define un healthcheck para verificar la salud de la aplicación
# Dependiendo de la configuración de tu aplicación, necesitarás ajustar este comando
# Aquí se asume que tu aplicación tiene un endpoint GET /v1/health/liveness que devuelve un código de estado 200 si está en funcionamiento
HEALTHCHECK CMD curl --fail http://localhost:${APP_PORT}/v1/health/liveness || exit 1
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ El proyecto cuenta con un `dockerfile` y un `docker-compose.yml` de base, listo

### Docker Build

Schema: `docker build . -t <user-docker>/<app-name>`
Schema: `docker build -t <user-docker>/<app-name> .`

Schema: `docker run -d -p 8080:8080 --name <container-name> --env-file <.env> <user-docker>/<app-name>`

Expand All @@ -342,7 +342,7 @@ Schema: `docker run -d -p 8080:8080 --name <container-name> --env-file <.env> <u
docker build -t nestjs-starter .
```
```
docker run -d -p 8080:8080 --name nestjs-starter-app --env-file .env.prod nestjs-starter
docker run -d -p 8080:8080 --name nestjs-starter-app --env-file .env nestjs-starter
```

<a name="commits"></a>
Expand Down