Explore elementos de um Dockerfile

Concluído

Um Dockerfile é um script que contém uma série de instruções que são usadas para criar uma imagem do Docker. Dockerfiles normalmente incluem as seguintes informações:

  • A imagem de base ou principal que utilizamos para criar a nova imagem
  • Comandos para atualizar o sistema operacional base e instalar outro software
  • Artefactos de compilação a incluir, por exemplo, uma aplicação desenvolvida
  • Serviços a expor, por exemplo, a configuração do armazenamento e da rede
  • O comando a executar quando o contentor for iniciado

Criar um Dockerfile

A primeira etapa na criação de um Dockerfile é escolher uma imagem base que sirva de base para seu aplicativo. Por exemplo, se você estiver criando um aplicativo .NET, poderá escolher uma imagem do 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 analisar cada linha para ver o que ela faz:

  • FROM mcr.microsoft.com/dotnet/runtime:6.0: Este comando define a imagem base para o tempo de execução do .NET 6, que é necessário para executar aplicativos do .NET 6.
  • WORKDIR /app: Define o diretório de trabalho como /app, que é onde os arquivos do aplicativo são copiados.
  • COPY bin/Release/net6.0/publish/ .: Copia o conteúdo do aplicativo publicado para o diretório do /app contêiner. Supomos que o aplicativo .NET 6 é criado e publicado no bin/Release/net6.0/publish diretório.
  • EXPOSE 80: Expõe a porta 80, que é a porta HTTP padrão, para o mundo exterior. Altere essa linha de acordo se seu aplicativo escutar em uma porta diferente.
  • CMD ["dotnet", "MyApp.dll"]: O comando a ser executado quando o contêiner é iniciado. Nesse caso, estamos executando o comando dotnet com o nome do arquivo DLL do nosso aplicativo (MyApp.dll). Altere esta linha para corresponder ao nome e ao ponto de entrada das suas aplicações.

Não vamos abordar a especificação do arquivo Dockerfile. Visite a referência do Dockerfile para obter mais informações. Cada um destes passos cria uma imagem de contentor colocada em cache à medida que vamos compilando a imagem de contentor final. Estas imagens temporárias estão em camadas sobre as imagens anteriores e são apresentadas como uma imagem única depois de concluídos todos os passos.

Recursos