Site icon bintorosoft.com

Docker Compose für CI Runner: GitHub Actions/GitLab Runner self-hosted

Selbstgehostete CI-Runner, wie GitHub Actions Runner oder GitLab Runner, lassen sich effizient in Docker-Containern betreiben. Docker Compose erleichtert das Management, die Konfiguration und Skalierung dieser Runner erheblich. In diesem Tutorial erfahren Sie, wie Sie CI-Runner sicher, performant und wartbar mit Docker Compose aufsetzen.

Vorteile von Docker Compose für CI-Runner

Die Nutzung von Docker Compose bietet klare Vorteile gegenüber einzelnen Container-Starts:

Grundstruktur eines Compose-Files für Runner

Ein typisches docker-compose.yml für einen GitLab Runner könnte folgendermaßen aussehen:

version: "3.9"

services:
  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    container_name: gitlab-runner
    restart: always
    volumes:
      - ./config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - ci-net

networks:
  ci-net:
    driver: bridge

Erklärung der wichtigsten Punkte

GitHub Actions Runner im Compose-Setup

Auch GitHub Actions Runners können in Docker Compose betrieben werden. Beispiel:

version: "3.9"

services:
  actions-runner:
    image: myoung34/github-runner:latest
    container_name: gh-runner
    environment:
      - REPO_URL=https://github.com/IhrBenutzer/IhrRepo
      - RUNNER_NAME=runner1
      - RUNNER_TOKEN=ghp_XXXXXXXXXXXXXXXXXXXX
      - RUNNER_WORKDIR=/tmp/github-runner
    restart: always
    volumes:
      - ./runner-workdir:/tmp/github-runner
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - ci-net

networks:
  ci-net:
    driver: bridge

Wichtige Hinweise

Netzwerk-Isolation und Sicherheit

Runner sollten nur die notwendigen Services sehen können, um Builds zu erstellen, aber nicht das gesamte Host-System:

networks:
  ci-net:
    driver: bridge
    internal: true

Persistenz von Konfigurationen und Workspaces

CI-Runner erzeugen Logs, Caches und temporäre Artefakte. Diese sollten nicht im Container selbst verbleiben:

volumes:
  - ./config:/etc/gitlab-runner
  - ./runner-workdir:/tmp/github-runner

Healthchecks und Restart Policies

Runner sollten überwacht werden, um fehlerhafte Container automatisch neu zu starten:

healthcheck:
  test: ["CMD", "gitlab-runner", "status"]
  interval: 30s
  retries: 3
restart: always

Logging und Monitoring

Persistente Logs erleichtern Debugging und Monitoring:

docker logs -f gitlab-runner

Scaling von Runnern

Mit Docker Compose können Sie mehrere Runner einfach hochskalieren:

docker-compose up -d --scale gitlab-runner=3

Best Practices zusammengefasst

Docker Compose bietet eine solide Grundlage für den Betrieb von selbstgehosteten CI-Runnern. Durch persistente Speicherung, isolierte Netzwerke, Healthchecks und Monitoring lässt sich eine sichere, stabile und skalierbare CI-Infrastruktur aufbauen, die GitHub Actions oder GitLab Runner zuverlässig ausführt.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version