Novidades do .NET Core 3.0: melhorias no suporte a Docker

Renato Groffe
3 min readMay 13, 2019

--

Como é do conhecimento de muitos, a Microsoft tem se esforçado para reduzir o tamanho das imagens Docker do .NET Core a cada novo release da plataforma. Com o .NET Core 3.0 isto não está sendo diferente, com uma redução bastante significativa na imagem corresponde ao SDK.

Podemos observar este fato na imagem a seguir, em que é possível estabelecer um comparativo entre as imagens do Preview 5 do .NET Core 3.0 e as versões correspondentes do .NET Core 2.2:

  • No .NET Core 2.2 as imagens normal e Alpine do SDK contavam com 1.73 GB e 1.47 GB, respectivamente. Com o .NET Core 3.0 o tamanho caiu para 723 MB;
  • A imagem do runtime do ASP.NET Core estava com 260 MB na versão 2.2. Com o Preview 5 da versão 3.0 também houve redução, com a imagem correspondente chegando a 196 MB (um pouco mais que a versão Alpine do ASP.NET Core 2.2, que possuía 168 MB).

As imagens do Preview 5 do .NET Core 3.0 podem ser baixadas através do seguintes comandos:

docker pull mcr.microsoft.com/dotnet/core/sdk:3.0.100-preview5

docker pull mcr.microsoft.com/dotnet/core/aspnet:3.0.0-preview5

Temos ainda outro destaque envolvendo a integração entre Docker e .NET Core 3.0: o PowerShell Core foi incorporado às imagens SDK a partir do Preview 4!

E qual a vantagem prática disto? Em sua versão cross-platform (Core) o PowerShell traz funcionalidades de automação e configuração que podem ser extremamente úteis no build de uma imagem.

Neste post apresentarei um exemplo bem simples dessa nova capacidade, tomando como base o projeto detalhado no seguinte artigo (API REST com contador de acessos):

ASP.NET Core 2.2 + Docker: visão geral e exemplos

Na listagem a seguir temos o Dockerfile para o build da imagem:

  • Estão sendo utilizadas as imagens do Preview 5 para o SDK na linha 1 (mcr.microsoft.com/dotnet/core/sdk) e o runtime do ASP.NET Core na linha 15 (mcr.microsoft.com/dotnet/core/aspnet);
  • Na linha 8 temos um exemplo de execução do PowerShell Core (utilitário pwsh.exe), com uma chamada ao comando Write-Host para a impressão em tela de uma mensagem durante o build.

Para este exemplo fiz uso também de um arquivo docker-compose.yml, com instruções para a geração da imagem apicontagem-3–0-preview5 e de um container para testes da mesma (na porta 10000):

Ao executar o build da imagem uma mensagem será exibida em tela (além do próprio step envolvendo o uso do PowerShell):

Concluído este procedimento o comando docker images apicontagem-3–0-preview5 indicará que a imagem da API REST baseada no ASP.NET Core 3.0 foi criada com sucesso:

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet