Docker

Install scm-manager with docker

Quickstart

Grab the latest version from download page and replace <version> in the code blocks below

docker run --name scm -p 8080:8080 -v scm-home:/var/lib/scm scmmanager/scm-manager:<version>

for example:

docker run --name scm -p 8080:8080 -v scm-home:/var/lib/scm scmmanager/scm-manager:2.0.0

Configuration

You can configure your server by using environment variables or adjusting the config.yml.

config.yml

The config.yml can be copied from your container, e.g.

docker cp scm:/etc/scm/config.yml ${PWD}/config.yml  

After you have customized the configuration to your needs, you can restart the container and mount this config.yml to override the default configuration, e.g.

docker run -v ${PWD}/config.yml:/etc/scm/config.yml scmmanager/scm-manager

Environment variables

Each field of the server configuration can be overridden by the related environment variable. The variables follow the same structure as the fields in the server config, e.g.

docker run -e "SCM_CONTEXT_PATH=/scm42" scmmanager/scm-manager

To find more examples, please check the server configuration docs.

Persistence

It is recommended to create a persistent volume for the scm-manager home directory. This allows scm-manager updates and recreation of the container without lose of data. The home directory is located at /var/lib/scm. It is recommended to use a volume managed by docker. If it is required to use a host directory, keep in mind that the scm-manager process is executed with a user which has the id 1000. So ensure that the user with the uid 1000 can write to the directory e.g.:

mkdir /scm_home
chown 1000:1000 /scm_home
docker run --name scm -p 8080:8080 -v /scm_home:/var/lib/scm scmmanager/scm-manager:<version>

Exposed Ports

SCM-Manager exposes its http port on port 8080. If you want to use the ssh plugin, keep in mind that this plugin requires an extra port (default is 2222).

docker run --name scm -p 2222:2222 -p 8080:8080 -v scm-home:/var/lib/scm scmmanager/scm-manager:<version>

JVM Parameters

If it becomes necessary to add JVM parameters to the start, there are two ways to do this:

  • As arguments e.g.:
docker run scmmanager/scm-manager:<version> -Dsome.property=value
  • Or as JAVA_OPTS environment variable e.g.:
docker run -e JAVA_OPTS="-Dsome.property=value" scmmanager/scm-manager:<version>

Docker Compose

If you want to use the image with docker-compose have a look at the example below.

version: '2.0'
services:
  scm:
    image: scmmanager/scm-manager:<version>
    ports:
      - "8080:8080"
      # if the ssh plugin is used
      - "2222:2222"
    volumes:
      - scmhome:/var/lib/scm
volumes:
  scmhome: { }

Variants

We are offer two variants of the SCM-Manager docker image one with OpenJDK on Alpine and the other with Eclipse Temurin on Debian.

scmmanager/scm-manager:-alpine

This image uses the Alpine operating system and the OpenJDK distribution from the official apk repository. The image is available for the following os/architectures:

  • linux/amd64
  • linux/arm64

scmmanager/scm-manager:-debian

This image uses the Debian operating system and the Eclipse Temurin JDK. The image is available for the following os/architectures:

  • linux/amd64
  • linux/arm64
  • linux/arm/v7

scmmanager/scm-manager:

The default image is mainly an alias for the alpine variant, but there is no alpine variant for arm/v7. For arm/v7 the debian variant is used.

  • linux/amd64 uses the alpine variant
  • linux/arm64 uses the alpine variant
  • linux/arm/v7 uses the debian variant