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/ .
# Document that the application listens on port 80 (does not publish it)
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/appdo contêiner. Assumimos que o aplicativo .NET 6 esteja criado e publicado no diretóriobin/Release/net6.0/publish. -
EXPOSE 80: documenta qual porta o aplicativo espera. Altere essa linha adequadamente se o seu aplicativo escutar em uma porta diferente. AEXPOSEinstrução não publica a porta na máquina host. Para tornar o aplicativo acessível externamente, usedocker run -p <host_port>:<container_port>para especificar portas. -
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 do 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