Dockerfile
Para construir imágenes de Docker.
.dockerignore
- Crear en la raíz del proyecto
- Para no copiar estos archivos ya que se generan automáticamente
.dockerignore
dist/
node_modules/
.gitignore
.git/
Dockerfile
- Crear el archivo
Dockerfileen la raíz del proyecto - Generalmente se construyen imágenes basadas en otra imagen, en este caso sobre Node
- Recomendable usar versiones especificas, como
node:18-alpine3.15y no solonode:latest alpinees una versión ligera de Linux, con características mínimas- También se crea un usuario Root (en Linux)
Dockerfile
# Usar imagen de Node minimal
FROM node:20.9.0-alpine3.18
# Directorio
RUN mkdir -p /var/www/pokedex
WORKDIR /var/www/pokedex
# Copiar proyecto
COPY . ./var/www/<project-folder-name>
COPY package.json tsconfig.json tsconfig.build.json /var/www/<project-folder-name>/
# Instalar dependencias y compilar la aplicacion
RUN yarn install
RUN yarn build
# Crear usuario
RUN adduser --disabled-password <username>
RUN chown -R <username>:<username> /var/www/<project-folder-name>
USER <username>
# Ejecutar app
RUN yarn cache clean --force
EXPOSE 3000
CMD [ "yarn","start" ]
Con comentarios
Dockerfile
# 1. Construir sobre la imagen de Node
FROM node:20.9.0-alpine3.18
# 2. (Linux) Crear carpeta para la aplicación
RUN mkdir -p /var/www/<project-folder-name>
# 3. Para usar solo "/" donde solicite la ruta
WORKDIR /var/www/<project-folder-name>
# 4. Copiar del directorio actual a la carpeta de la aplicación
# "." significa la carpeta actual
# "./var/www/pokedex" o "/" es la carpeta de la aplicación en el contenedor
COPY . ./var/www/pokedex
# 5. Copiar los archivos necesarios para la aplicación
# No seria necesario porque se copia todo con el comando anterior
COPY package.json tsconfig.json tsconfig.build.json /var/www/pokedex/
# 6. Instalar dependencias de producción, opcional --prod
RUN yarn install
# 7. Compilar la aplicación
RUN yarn build
# 8. Crear nuevo usuario para no usar ROOT
# Sin contraseña, solo nombre de usuario
RUN adduser --disabled-password pokeuser
# Dar acceso solo a la carpeta de la aplicación
RUN chown -R pokeuser:pokeuser /var/www/pokedex
# Cambiar y usar el nuevo usuario
USER pokeuser
# 9. Opcional. Limpiar el caché
RUN yarn cache clean --force
# 10. Exponer el puerto de la aplicación
EXPOSE 3000
# 11. Iniciar la aplicación
CMD [ "yarn","start" ]