.Net 5.0 - Compilando suas imagens Docker, com bibliotecas de NuGet interno
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
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
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>
Upload feito com sucesso. Agora abra seu NuGet interno, e veja a biblioteca disponível
Neste momento, vamos criar um novo projeto, e fazer a referência desta biblioteca em nosso projeto.
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.
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:
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”
Depois disso, execute novamente o comando para o build da imagem:
docker build -t testenugetinterno .
Imagem compilada com sucesso.
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!
