Saltar al contenido principal

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

  1. Crear el archivo Dockerfile en la raíz del proyecto
  2. Generalmente se construyen imágenes basadas en otra imagen, en este caso sobre Node
  • Recomendable usar versiones especificas, como node:18-alpine3.15 y no solo node:latest
  • alpine es 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" ]