ASP .NET Core 3.1 - Conteinerizando uma aplicação ASP .NET Core MVC - II


 Neste artigo veremos como criar uma aplicação Web MVC e conteinerizar essa aplicação usando o Docker. Vou usar a versão 3.1 do .NET Core SDK, da ASP .NET e do runtime.

Vamos continuar a primeira parte do artigo onde criamos uma aplicação ASP .NET Core MVC usando o .NET Core 3.1.

Nossa aplicação foi criada e testada e agora vamos criar um arquivo Dockerfile e criar uma imagem customizada usando as imagens do .NET Core SDK 3.1 , e da ASP .NET Core 3.1.

recursos usados:

  • Linux Ubuntu 18.04
  • .NET Core SDK 3.1
  • Visual Studio Code
  • Docker

Criando o arquivo Dockerfile

Vamos abrir o projeto criado na pasta projetos/mvc31 digitando o comando : code .

A seguir veremos nosso projeto aberto no VS Code e vamos criar um arquivo chamado Dockerfile.

Neste arquivo vamos definir o código abaixo:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copiar csproj e restaurar dependencias
COPY *.csproj ./
RUN dotnet restore
RUN pwsh -Command Write-Host "Mvc31: Gerando imagem Docker e testando o PowerShell Core"
# Build da aplicacao
COPY . ./
RUN dotnet publish -c Release -o dist
# Build da imagem
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/dist .
ENTRYPOINT ["dotnet", "mvc31.dll"]

Abaixo o arquivo no VS Code:

Abaixo os comandos usados no Dockerfile:

FROM  - O primeiro argumento do Dockerfile deve ser sempre o FROM, seguido da imagem e versão que será utilizada. Caso não seja informada a versão, o Docker vai procurar a mais atual do seu repositório oficial.

WORKDIR - Define a pasta padrão no contâiner

COPY - Copia arquivos do seu ambiente para o contâiner.Ex: COPY origem destino

RUN: executa os comandos dentro do container;

ENTRYPOINT - Define o aplicativo padrão usado toda vez que um contêiner é criado a partir da imagem.

Processando o arquivo Dockerfile

Muito bem já temos o arquivo Dockerfile que descreve as etapas que serão executadas para criar a imagem.

Para processar o arquivo Dockerfile usamos o comando :  docker build -t <imagem> .

Vamos supor que quero criar a imagem com o nome e tag : mvc31/app:1.0

Para fazer isso usamos o comando  build e informamos o nome da imagem, a tag e um ponto(.).

O comando fica assim: docker build -t mvc31/app:1.0 .

onde:

docker build            -> O comando
-t                           -> Parâmetro usado para informar que a imagem pertence ao meu usuário
mvc31/app:1.0         -> O nome da imagem e a tag atribuída à imagem
.                             -> significa o diretório atual (pois dei o build dentro da pasta do Dockerfile)

Ao final da execução do comando poderemos conferir a imagem criada digitando : docker images

Agora podemos criar o contâiner para nossa aplicação ASP .NET Core a partir da imagem mvc31/app:1.0 criada.

Criando o container da aplicação ASP .NET Core MVC 3.1

Vamos agora criar um contâiner a partir da imagem criada. Para isso digite o seguinte comando:

docker container run -d --name testemvc31 -p 3000:80 mvc31/app:1.0

Este comando cria um contâiner em segundo plano (-d) chamado testemvc31 que atende na porta 3000 no navegador.

Para verificar o contâiner criado e em execução digite o comando : docker container ps -a

Agora podemos abrir um navegador em : https://localhost:3000 e veremos o resultado abaixo:

Temos assim o contâiner com nossa aplicação ASP .NET Core MVC 3.1 sendo executado em um contâiner Docker no ambiente Linux.
 

Referências:


José Carlos Macoratti