Contents

Docker and containers Enterprise

The team server image holds one program. It has no shell, runs as a non-root user and works with a read-only root file system. The image is available for linux/amd64 and linux/arm64, and Docker selects the correct one. The gitta Enterprise image for IBM z/OS Container Extensions (zCX) is built for IBM Z (linux/s390x), see Run gitta on z/OS with zCX.

Docker

 Terminal
$ docker run -d --name gitta --restart unless-stopped --init \
    -e GITTA_TOKENS=<admin token> -e GITTA_SIGNING_KEY=<48 random characters> \
    -e GITTA_LICENSE="$(cat example.license)" \
    -v gitta-data:/data -p 8080:8080 --read-only --cap-drop ALL \
    europe-north1-docker.pkg.dev/gitta-io-prod/enterprise/gitta-server:0.1.0
$ curl http://localhost:8080/healthz
ok

Put a TLS proxy in front, or give the server a certificate. See TLS.

Docker Compose

# docker-compose.yml
services:
  gitta-server:
    image: europe-north1-docker.pkg.dev/gitta-io-prod/enterprise/gitta-server:0.1.0
    init: true
    restart: unless-stopped
    env_file: .env          # GITTA_TOKENS, GITTA_SIGNING_KEY, GITTA_LICENSE
    ports: ["8080:8080"]
    volumes: [gitta-data:/data]
volumes:
  gitta-data:
 Terminal
$ printf "GITTA_TOKENS=%s\nGITTA_SIGNING_KEY=%s\n" $(openssl rand -hex 24) $(openssl rand -hex 32) > .env
$ docker compose up -d

Managed container services

The same image runs on Cloud Run, Azure Container Apps and AWS ECS with Fargate. The server reads the port from PORT when the platform sets it.

Each server keeps the team's state in memory. Give each server its own service with exactly one instance:

Do not put several instances behind one address, and do not scale to zero. For more than one server, run more services. See High availability.