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.

Saiba mais: O que é uma API?

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.