Explorar os elementos de um Dockerfile
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óriobin/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
- Referência de execução do Docker (CLI)
- Referência de build do Docker