Exploración de los elementos de un Dockerfile

Completado

Un Dockerfile es un script que contiene una serie de instrucciones que se usan para compilar una imagen de Docker. Los Dockerfile suelen incluir la siguiente información:

  • La imagen base o primaria que usamos para crear la nueva imagen.
  • Los comandos para actualizar el sistema operativo base e instalar otro software.
  • Los artefactos de compilación que se incluirán, como una aplicación desarrollada.
  • Los servicios que se expondrán, como la configuración de red y del almacenamiento.
  • El comando que se ejecutará cuando se inicie el contenedor.

Creación de un archivo Dockerfile

El primer paso para crear un Dockerfile es elegir una imagen base que sirva como base para la aplicación. Por ejemplo, si va a compilar una aplicación .NET, puede elegir una imagen de Microsoft .NET como base.

# Use the .NET 6 runtime as a base image
FROM mcr.microsoft.com/dotnet/runtime:6.0

# Set the working directory to /app
WORKDIR /app

# Copy the contents of the published app to the container's /app directory
COPY bin/Release/net6.0/publish/ .

# Expose port 80 to the outside world
EXPOSE 80

# Set the command to run when the container starts
CMD ["dotnet", "MyApp.dll"]

Vamos a recorrer cada línea para ver lo que hace:

  • FROM mcr.microsoft.com/dotnet/runtime:6.0: este comando establece la imagen base en el entorno de ejecución de .NET 6, que es necesario para ejecutar aplicaciones de .NET 6.
  • WORKDIR /app: establece el directorio de trabajo en /app, que es donde se copian los archivos de la aplicación.
  • COPY bin/Release/net6.0/publish/ .: copia el contenido de la aplicación publicada en el directorio /app del contenedor. Se supone que la aplicación de .NET 6 se ha compilado y publicado en el directorio bin/Release/net6.0/publish.
  • EXPOSE 80: expone el puerto 80, que es el puerto HTTP predeterminado, al mundo exterior. Cambie esta línea en consecuencia si la aplicación escucha en un puerto diferente.
  • CMD ["dotnet", "MyApp.dll"]: el comando que se va a ejecutar cuando se inicie el contenedor. En este caso, estamos ejecutando el comando dotnet con el nombre del archivo DLL de nuestra aplicación (MyApp.dll). Cambie esta línea para que coincida con el nombre de las aplicaciones y el punto de entrada.

No se describirá la especificación del archivo Dockerfile. Para más información, visite la referencia de Dockerfile. En cada uno de estos pasos se crea una imagen de contenedor en caché a medida que compilamos la imagen de contenedor final. Estas imágenes temporales se superponen encima de la anterior y se presentan como una sola imagen una vez completados todos los pasos.

Recursos