- 01 Feb 2022
- 4 Minutes to read
Docker Installation Guide
- Updated on 01 Feb 2022
- 4 Minutes to read
The easiest way to install ProGet, BuildMaster, or Otter on Linux is by using Docker. Inedo product images are hosted on the official Inedo docker registry, and this guide will walk you through running these container images.
Docker must be installed and the docker daemon must be running on your server. If you don't already have Docker installed, you can get installation instructions for your specific Linux distribution from Docker.
Once Docker is up and running, you are ready to continue. Note that Docker commands generally have to be issued by members of the docker group or with root/sudo privileges, so if you encounter errors with these commands make sure your account is in the docker group (
adduser myusername docker and then log out and back in), or issue them with sudo/su depending on your distro.
Create a Network
First, you'll need to create a network for the SQL Server and Inedo Product containers to communicate.
docker network create inedo
Create the Database
Inedo Products requires a SQL Server database. You can either host this database externally or simply use a SQL Server Docker image; it doesn't matter how it's hosted, as long as your instance can access it.
To start a SQL Server container on the
inedo network you created, you can use this command:
docker run --name inedo-sql \ -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=«YourStrong!Passw0rd»' \ -e 'MSSQL_PID=Express' --net=inedo --restart=unless-stopped \ -d mcr.microsoft.com/mssql/server:2019-latest
This example specifies the free SQL Express edition. This is adequate for most installations, but you can use any other edition as well if you have the license for it.
Once you have a SQL Server instance up and running, you'll need to create an empty database.
Example: ProGet SQL Server Database
To create a database called
ProGet on the SQL Server instance running in the inedo-sql container:
docker exec -it inedo-sql /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '«YourStrong!Passw0rd»' \ -Q 'CREATE DATABASE [ProGet] COLLATE SQL_Latin1_General_CP1_CI_AS'
You can create the database however you want, but to avoid issues make sure you specify its collation as SQL_Latin1_General_CP1_CI_AS.
Starting your Inedo product' Docker Image
Inedo product's Docker images contain a web server and a background service. To start your chosen image, use the
docker run command.
|Product||Image Name||Required Volumes|
If you'd like to just get started right away with our defaults, you can just use the commands below as-is, or continue reading for an explanation on the arguments and how to provide additional configuration values. For root-less containers, check our our Troublshooting Guide for root-less containers.
Quick Start: ProGet
docker run -d --name=inedo --restart=unless-stopped \ -v proget-packages:/var/proget/packages -p 80:80 --net=proget \ -e SQL_CONNECTION_STRING='Data Source=inedo-sql; Initial Catalog=ProGet; User ID=sa; Password=«YourStrong!Passw0rd»' \ proget.inedo.com/productimages/inedo/proget:latest
Quick Start: BuildMaster
docker run -d --name=buildmaster --restart=unless-stopped \ -v buildmaster-artifacts:/var/buildmaster/artifacts \ -p 80:80 --net=inedo \ -e BUILDMASTER_SQL_CONNECTION_STRING='Data Source=inedo-sql; Initial Catalog=BuildMaster; User ID=sa; Password=«YourStrong!Passw0rd»' \ proget.inedo.com/productimages/inedo/buildmaster:latest
Quick Start: Otter
docker run -d --name=otter --restart=unless-stopped \ -p 80:80 --net=inedo \ -e OTTER_SQL_CONNECTION_STRING ='Data Source=inedo-sql; Initial Catalog=Otter; User ID=sa; Password=«YourStrong!Passw0rd»' \ proget.inedo.com/productimages/inedo/otter:latest
||Starts the container in detached mode. Without this argument, Docker will block your current terminal session and output the logs to your terminal.|
||Names the container
||Tells Docker to restart the container unless it is explicitly topped using docker stop. This makes the container automatically restart after the host reboots.|
||Exposes TCP port 80 of the container to port 80 of the host, so that browsers can access the web application. If you don't want to use port 80, you can change the first port number to whatever you would like; make sure to change the
||Putting the containers into a Docker network lets them see each other and prevents other Docker containers from accessing them.|
||ProGet Only: Persists ProGet's packages in the proget-packages Docker volume. Note that a Docker volume is essentially just a persistent, data-only container, and is the preferred mechanism for persisting data generated by a running Docker container. If you would prefer to mount a host file system directory directly instead, you may replace proget-packages with a host path, such as /var/proget/packages.|
||BuildMaster Only: Persists BuildMasters's artifacts in the buildmaster-artifacts Docker volume. Note that a Docker volume is essentially just a persistent, data-only container, and is the preferred mechanism for persisting data generated by a running Docker container. If you would prefer to mount a host file system directory directly instead, you may replace buildmaster-artifacts with a host path, such as /var/buildmaster/artifacts.|
||This tells docker to pass the proceding environment variables to the container. See the full list of supported environment variables.|
||This is the repository and tag for the Docker image. If you want to install a specific version, you can replace
Acquire a License Key
You'll need to have a valid license key once you get your Inedo product up and running. You can request a license key within the software itself, or use a license key that you already have or requested from my.inedo.com.