Running a NuGet Server on Docker
November 14, 2018 by Anuraj
Docker NuGet Server .NET Core
This post is about running a NuGet server on Docker. When you’re building .NET Core projects, NuGet packages are retrieved from nuget.org by default. Sometimes, however, you might want to use a local NuGet repository. This post helps you to configure a minimal NuGet server on Docker.
The official NuGet.Server package which helps you to run NuGet feeds locally which is not cross platform, so I was looking for some other package and I found BaGet, it is a NuGet server implementation on .NET Core. So you can use the ASP.NET Core runtime as the base image, install the server and run the app. Here is the DockerFile.
First I am using ASP.NET Core runtime as the base image, installing the wget
and unzip
utilities. Then I am downloading the BaGet zip from the releases. Since I want to run the server in port 8000, I am setting the ASPNETCORE_URLS
environment variable. The ApiKeyHash
environment variable is used by BaGet as the API Key for NuGet publishing. It is a SHA256 encrypted value for NUGET-SERVER-API-KEY
.
You can build the container using docker build
command, and run it using docker run
command - docker run -d -p 8000:8000 --name nugetserver anuraj/baget:latest
. Once it is running, you can access it using http://localhost:8000.
You can publish a nuget package using the command - dotnet nuget push -s http://localhost:8000/v3/index.json .\bin\Debug\AppLogger.1.0.0.nupkg -k NUGET-SERVER-API-KEY
And you can update your nuget.config in Visual Studio, Tools > NuGet Package Manager > Package Manager Settings. And select the Package sources and add your URL and name.
This post was about configuring your own nuget server locally with the help of Docker. You can download the docker image from Docker Hub with command - docker pull anuraj/baget
. And more details available here
Happy Programming :)
Copyright © 2024 Anuraj. Blog content licensed under the Creative Commons CC BY 2.5 | Unless otherwise stated or granted, code samples licensed under the MIT license. This is a personal blog. The opinions expressed here represent my own and not those of my employer. Powered by Jekyll. Hosted with ❤ by GitHub