Skip to content

Instantly share code, notes, and snippets.

@RamEduard
Last active April 11, 2024 00:07
Show Gist options
  • Save RamEduard/25104def7a2eb3fde1014a350a3778a8 to your computer and use it in GitHub Desktop.
Save RamEduard/25104def7a2eb3fde1014a350a3778a8 to your computer and use it in GitHub Desktop.
¿Cómo dockerizar tu REST API de Node.js?

¿Cómo dockerizar tu REST API de Node.js?

Algunas referencias

Estos dos artículos te pueden ayudar a entender sobre Docker

Pasos

Paso 1: Sequelize migrate

Crear el archivo SQLite para el ambiente production

$ NODE_ENV=production npm run db:migrate

Paso 2: docker init

En este paso vamos a crear los archivos necesarios de Docker Dockerfile, .dockerignore, compose.yaml y README.docker.md.

Ejecuta el siguiente comando para inicializar Docker en tu proyecto:

  • $ docker init

Paso 3: docker build

Construir la imagen de Docker con el siguiente comando:

  • $ docker build -t node-expenses-rest-api:latest .

Paso 4: docker run

Ejecutar un contenedor con la imagen que construimos en el Paso 3.

$ docker run --name node-expenses-rest-api -p 3000:3000 -d node-expenses-rest-api

Luego podrás acceder a http://localhost:3000 en tu navegador al igual que cuando inicias tu app con npm start.

Paso 5: Modificar Dockerfile

Esto va a ser necesario para poder escribir en el archivo de expenses-app.production.sqlite3.

ARG NODE_VERSION=20.12.0

FROM node:${NODE_VERSION}-alpine

ENV NODE_ENV production

# Crear WORKDIR y cambiar ownership a node:node
RUN mkdir -p /home/node/app && chown -R node:node /home/node/app

# Cambiamos el directorio de trabajo
WORKDIR /home/node/app

RUN --mount=type=bind,source=package.json,target=package.json \
    --mount=type=bind,source=package-lock.json,target=package-lock.json \
    --mount=type=cache,target=/root/.npm \
    npm ci --omit=dev

USER node

# Actualizar ownership a node:node
COPY --chown=node:node . .

EXPOSE 3000

CMD npm start

Otros

  • $ docker ps Mostrar el listado de contenedores en ejecución.
  • $ docker logs node-expenses-rest-api Mostrar logs del contenedor (node-expenses-rest-api) en ejecución.
  • $ docker exec -it node-expenses-rest-api /bin/sh Ejecutar sh en el contenedor (node-expenses-rest-api) en ejecución.
  • $ docker exec -it node-expenses-rest-api ls -all /home/node/app Ejecuta el comando ls -all /home/node/app en el contenedor (node-expenses-rest-api) en ejecución.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment