Como criar uma imagem Docker de uma API da Web .NET
Uma das principais vantagens do Docker é que ele permite que você execute projetos de software sem a necessidade de configurar ambientes de desenvolvimento complexos.
Este guia mostrará como criar uma imagem Docker de uma API da Web .NET 5. Você pode então usar a imagem para executar o código de back-end de qualquer PC que tenha Docker instalado e interagir com a API de seu projeto da web front-end ou um aplicativo móvel.
Criação de uma API da Web .NET 5
Tanto o Docker quanto o .NET 5 são de código aberto e multiplataforma, portanto, você pode seguir este guia se estiver usando macOS, Windows ou Linux.
Use o dotnet CLI para criar um projeto ASP.NET Web API com o seguinte comando:
dotnet new webapi -o aspdockerapi
O comando acima cria um projeto chamado aspdockerapi e o coloca em uma pasta com o mesmo nome. Além disso, o aplicativo constrói um controlador de API com alguns dados de previsão do tempo de amostra.
Observação : se você não tiver o .NET 5 instalado em seu PC, pode baixá-lo no link abaixo.
Download : .NET 5 para Windows, macOS e Linux
Uma vez que o projeto é criado, você pode ir para a pasta raiz do projeto usando o seguinte comando.
cd aspdockerapi
Você pode executar e servir a API da web usando o comando abaixo.
dotnet run
Por padrão, o aplicativo será servido na porta 5001. Você pode visualizar os dados de amostra do aplicativo em seu navegador no seguinte URL: https: // localhost: 5001 / weatherforecast e os dados das APIs devem ser os seguintes.
Criação de instruções de imagem do Docker
Para criar uma imagem Docker, você precisa fornecer ao Docker Engine algumas instruções sobre como criá-la. Essas instruções devem ser colocadas em um arquivo denominado Dockerfile . Observe que o arquivo não tem extensão.
Use o seguinte comando para criar o Dockerfile na pasta raiz do projeto do aplicativo.
touch Dockerfile
Depois de criar o Dockerfile , a estrutura da pasta de seus projetos deve ser semelhante a esta abaixo:
Agora, copie e cole o código abaixo em seu Dockerfile .
FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["aspdockerapi.csproj", "./"]
RUN dotnet restore "./aspdockerapi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "aspdockerapi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "aspdockerapi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "aspdockerapi.dll"]
Nota : No Dockerfile acima, os nomes do projeto e dll são aspdockerapi.csproj e aspdockerapi.dll respectivamente, se seu projeto tiver um nome diferente, certifique-se de atualizar seu Dockerfile com os nomes corretos.
Compreendendo as instruções do Dockerfile
O Dockerfile é composto principalmente de palavras-chave do Dockerfile, que por convenção são palavras em letras maiúsculas. As palavras-chave especificam a instrução a ser executada em cada camada da imagem Docker. Abaixo estão as principais palavras-chave do Docker que o Dockerfile acima usa.
1. DE
A palavra-chave FROM especifica a imagem base sobre a qual queremos que nossa imagem seja construída. No Dockerfile acima, a imagem base inicial é uma imagem .NET 5 da Microsoft. A imagem base do .NET 5 contém os componentes necessários para a execução do aplicativo.
2. WORKDIR
WORKDIR define o diretório de trabalho ou contexto dentro da imagem. Neste exemplo, o diretório / app é designado como o diretório de trabalho raiz padrão usando a seguinte instrução WORKDIR / app .
3. COPIAR
A palavra-chave COPY simplesmente copia o conteúdo de uma pasta e o coloca em outra. Neste exemplo, ele é inicialmente usado para copiar o arquivo do projeto principal, ou seja, aspdockerapi . csproj no diretório de trabalho de imagens.
4. RUN
A palavra-chave RUN é usada para executar um comando específico do Linux em uma imagem Docker. No Dockerfile acima, o comando RUN é usado para restaurar dependências, construir o projeto ASP.NET e publicar o projeto.
5. CMD
A palavra-chave CMD é um pouco semelhante à palavra-chave RUN discutida acima. Também é usada na execução de um comando do Linux, mas ao contrário da palavra-chave RUN que executa comandos para construir a imagem, a palavra-chave CMD é usada para executar comandos do Linux quando a imagem é iniciada, em uma instância de contêiner.
6.EXPOSE
A palavra-chave EXPOSE é usada para expor uma porta dentro da imagem Docker para o mundo externo. Nesse caso, a imagem expõe a porta 80, que é usada para expor a API ao executar o contêiner do Docker.
Construindo a imagem Docker
Para construir a imagem Docker com base no Dockerfile, basta executar o seguinte comando dentro da pasta raiz do projeto, ou seja, onde o Dockerfile é colocado.
docker build -t dockerwebapi -f Dockerfile .
O comando acima marca a imagem do Docker com o nome dockerwebapi e também especifica que as instruções para construir essa imagem estão no Dockerfile .
Após a conclusão da construção da imagem, você pode verificar se ela está listada como uma imagem Docker local usando o seguinte comando:
docker images
A saída do comando acima deve ser semelhante à abaixo, e a imagem ( dockerwebapi ) aparece na primeira linha neste caso.
Se você não tem o Docker instalado em seu PC, veja como instalar o docker no Ubuntu Linux , caso contrário, use o link abaixo para baixar e instalar o Docker.
Download : guia de download e instalação do Docker
Executando a imagem do Docker
Para executar a imagem Docker recém-criada, use o seguinte comando. A opção -ti especifica que a imagem deve ser executada em um modo de terminal interativo e –rm especifica que o contêiner deve ser removido imediatamente após sua saída.
docker run -ti --rm -p 8080:80 dockerwebapi
Além disso, o comando especifica que o contêiner do Docker deve ser executado na porta HTTP 8080, que mapeia para a porta 80 dentro do contianer.
Vá para o URL: http: // localhost: 8080 / WeatherForecast em seu navegador e você encontrará seus dados API sendo servidos a partir da instância do Docker que você está executando.
Por que usar o Docker?
Este guia mostrou como criar uma imagem Docker de uma API da Web .NET 5.
Com o Docker, você pode automatizar como implantar seus aplicativos, simplificar a configuração de ambientes de desenvolvimento de software e facilitar a colaboração com outros engenheiros de software.
O Docker também oferece várias vantagens sobre outras tecnologias de virtualização, por isso você provavelmente deve considerar usá-lo em seus projetos de engenharia de software.