Explorar os 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. Os Dockerfiles normalmente incluem as seguintes informações:

  • A imagem base ou pai que usamos para criar a imagem
  • Comandos usados para atualizar o sistema operacional base e instalar software adicional
  • Artefatos de compilação a serem incluídos, como um aplicativo desenvolvido
  • Serviços a serem expostos, como um armazenamento e uma configuração de rede
  • Comando a ser executado quando o contêiner é iniciado

Criar um Dockerfile

A primeira etapa na criação de um Dockerfile é escolher uma imagem base que serve como 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 percorrer cada linha para ver o que ela faz:

  • FROM mcr.microsoft.com/dotnet/runtime:6.0: esse comando define a imagem base para o runtime do .NET 6, que é necessário para executar aplicativos .NET 6.
  • WORKDIR /app: define o diretório de trabalho como /app, que é onde os arquivos de aplicativo são copiados.
  • COPY bin/Release/net6.0/publish/ .: copia o conteúdo do aplicativo publicado para o diretório /app do contêiner. Assumimos que o aplicativo .NET 6 esteja criado e publicado no diretório bin/Release/net6.0/publish.
  • EXPOSE 80: expõe a porta 80, que é a porta HTTP padrão, para o mundo exterior. Altere essa linha adequadamente se o 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 aplicativo (MyApp.dll). Altere essa linha para corresponder ao nome e ao ponto de entrada dos aplicativos.

Não abordaremos a especificação do arquivo Dockerfile. Visite a referência Dockerfile para obter mais informações. Cada uma destas etapas cria uma imagem de contêiner armazenada em cache conforme compilamos a imagem de contêiner final. Essas imagens temporárias são colocadas em camadas sobre as anteriores e apresentadas como uma única imagem depois que todas as etapas são concluídas.

Recursos