Estos dos artículos te pueden ayudar a entender sobre Docker
- ¿Qué es Docker y para qué sirve? Explicación - por Eduardo Zepeda
- Comandos de linux que deberías conocer (Chown) - por Eduardo Zepeda
Crear el archivo SQLite para el ambiente production
$ NODE_ENV=production npm run db:migrate
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
Construir la imagen de Docker con el siguiente comando:
$ docker build -t node-expenses-rest-api:latest .
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
.
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
$ 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
Ejecutarsh
en el contenedor (node-expenses-rest-api
) en ejecución.$ docker exec -it node-expenses-rest-api ls -all /home/node/app
Ejecuta el comandols -all /home/node/app
en el contenedor (node-expenses-rest-api
) en ejecución.