Sitemap

.Net 5.0 - Compilando suas imagens Docker, com bibliotecas de NuGet interno

4 min readMar 15, 2021
Press enter or click to view image in full size

Olá Pessoal, tudo bem?

As vezes, precisamos criar alguns facilitadores (bibliotecas) em nossos projetos onde possamos reaproveitar. E para algumas empresas, compartilhar isso para fora da empresa, pode não ser uma boa ideia.

Para isso é possível, criar essas bibliotecas e hospedar em um NuGet interno dentro Azure Devops.

Para criar seu pacote em seu NuGet interno em seu Azure Devops, basta ir na opção Artifacts

E crie um feed novo para a sua organização!

Depois de criar, clique em Connect to feed

E depois clique em dotnet

Press enter or click to view image in full size

Veja que você tem a url de seu NuGet interno, e também como fazer para o upload de sua biblioteca.

Então, logo após isso, vamos fazer o upload de uma biblioteca em nosso NuGet interno. Para isso precisamos ter um token de acesso, que no Azure Devops, se chama PAT(Personal Access Token)

Depois disso, clique em Novo Token, e crie sua chave

O Azure Devops, irá te fornecer um token de acesso. Guarde esse token, pois iremos usar para fazer o upload da biblioteca e também iremos usar para fazer o restore em nossa imagem docker.

Agora por linha de comando, na pasta do projeto, vamos executar um comando para criar um arquivo de configuração de conexão com o NuGet interno.

Comando: dotnet new nugetconfig

Depois disso configure o arquivo nuget.config

Press enter or click to view image in full size

Adicione o link de seu NuGet interno, e adicione o PAT no campo ClearTextPassword

Depois disso, precisamos gerar o pacote para fazer o upload no NuGet.

Execute o comando: dotnet pack

Este comando irá gerar um arquivo de extensão .nupkg

Com isso, iremos fazer o upload para o nosso NuGet interno. Execute o comando abaixo:

dotnet nuget push <path/file.nupkg> -- source <UrlNuget> --api-key <PAT>

Press enter or click to view image in full size

Upload feito com sucesso. Agora abra seu NuGet interno, e veja a biblioteca disponível

Press enter or click to view image in full size

Neste momento, vamos criar um novo projeto, e fazer a referência desta biblioteca em nosso projeto.

Press enter or click to view image in full size

Criei uma API em Net Core 5.0 com suporte ao Docker

Depois de criado, vamos fazer a referência da nossa biblioteca que está em nosso NuGet interno.

Adicione a url de seu NuGet interno em seu Visual Studio, e depois adicione a biblioteca.

Press enter or click to view image in full size

Agora que estamos com a referência de nossa biblioteca em nosso projeto, vamos fazer um build de uma imagem Docker.

Abra o CMD, e vá até a pasta do projeto e digite o comando:

docker build -t testenugetinterno .

Acontece o seguinte erro:

Press enter or click to view image in full size

O erro, é que ao fazer o build da imagem, não foi encontrado a biblioteca TesteProtobuf.Queue.

Isso acontece, pois por padrão o comando dotnet restore que se encontra no dockerfile, faz somente o download de bibliotecas do NuGet público. Precisamos dizer ao comando restore, que ele também necessita fazer o download de meu NuGet interno.

Para fazer isso, necessitamos criar o arquivo nuget.config, dentro de nosso projeto, conforme fizemos anteriormente.

Configure o link de seu NuGet interno, e adicione o PAT no campo ClearTextPassword

Vá até seu dockerfile, e edite o comando dotnet restore, para:

RUN dotnet restore “TestePkgNuget/TestePkgNuget.csproj” — configfile “TestePkgNuget/nuget.config”

Press enter or click to view image in full size

Depois disso, execute novamente o comando para o build da imagem:

docker build -t testenugetinterno .

Press enter or click to view image in full size

Imagem compilada com sucesso.

Press enter or click to view image in full size

Vejam como é simples, criar suas bibliotecas e armazenar em um NuGet interno, dentro do Azure Devops. E também como buildar suas imagens em docker contendo essas bibliotecas.

Espero que tenham gostado deste artigo.

Até a próxima!

--

--

Fernando Mendes
Fernando Mendes

Written by Fernando Mendes

Software Architect .NET C# | Microsoft MVP 🏆🏆 | Co-Founder community JunDevelopers

No responses yet