Allgemein Docker Jenkins Traefik

Jenkins mit Docker und Traefik

Jenkins mit Docker und Traefik

Als Voraussetzung sollte Docker und Docker-Compose bereits auf dem Linux-System installiert sein!

Eine „Docker“ Gruppe hinzufügen falls noch nicht vorhanden und einen Jenkins User der dieser Gruppe zugehörig ist.

groupadd docker && usermod -aG docker 'jenkins'

Berechtigungen für das Dockerfile / Deamon

chmod 777 /var/run/docker.sock

! ACHTUNG auf einem Produktiv-Server sollten die Berechtigungen nicht so uneingeschränkt vergeben werden!

Docker-Compose File:

version: '3.5'
services:
  jenkins:
    image: "jenkins-with-docker-socket:lts-alpine"
    container_name: "jenkins-master"
    user: jenkins
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.jenkins-master.tls=true"
      - "traefik.http.routers.jenkins-master.rule=Host(`jenkins.localhost`)"
      - "traefik.http.routers.jenkins-master.entrypoints=websecure"
      - "traefik.network=traefik_internal"

  networks:
    - traefik_internal

  volumes:
    - ./jenkins_data:/var/jenkins_home

  ports:
    - "8080:8080"

  environment:
    - JENKINS_HOST_HOME= "/data/jenkins"

networks:
  traefik_internal:
    external:
      name: traefik_internal

ggf. in der /etc/hosts einen Eintrag für 127.0.0.1 jenkins.localhost nachtragen!
Der Jenkins-User benötigt Rechte auf das Verzeichnis -> /jenkins_data !

Vor dem starten bitte ggf. erst unten noch traefik einrichten!
Starten des Containers mit „docker-compose up -d“
Im Log kan mit „dockerc-ompose logs -f“ das initiale Passwort entnommen werden.
Im Anschluss kann im Frontent ein Admin-User mit seinem neuen Passwort bestätigt werden!

Traefik einrichten:

Hier das Docker-compose file:

 

version: '3.5'

services:
  traefik:
    restart: always
    image: "traefik:v2.1"
    container_name: "traefik"
    command:
      # - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
    ports:
      - "80:80"
      - "443:443"
    networks:
      - default
      - traefik_internal
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./certs:/data/tls-conf

    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik_internal"
      - "traefik.http.routers.traefik.entrypoints=web"
      - "traefik.http.routers.traefik.rule= Host(`traefik.localhost`)"

      - "traefik.http.routers.api.entrypoints=websecure"
      - "traefik.http.routers.api.tls=true"
      - "traefik.http.routers.api.rule=Host(`traefik.localhost`)"
      - "traefik.http.routers.api.service=api@internal"
      - "traefik.http.routers.api.middlewares=auth"
      - "traefik.http.middlewares.auth.basicauth.users=admin:(Passwort als hash erstellt)"
    # - "traefik.http.middlewares.auth.basicauth.usersfile=/docker/containers/traefik/data/.htpasswd"

    # global redirect to https
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true"
      - "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
      - "traefik.http.routers.redirs.entrypoints=web"
      - "traefik.http.routers.redirs.middlewares=redirect-to-https"

# whoami Testanwendung falls erwünscht

# whoami:
# image: "containous/whoami"
# container_name: "simple-service"
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.whoami.rule=Host(`whoami.localhost`)"
# - "traefik.http.routers.whoami.entrypoints=websecure"
# - "traefik.docker.network= traefik_internal"
# - "traefik.http.routers.whoami.tls=true"

networks:
  traefik_internal:
    external:
      name: traefik_internal

Für das erstellen eines Passworts als Hash im Code direkt oder in einer ausgelagerten Datei gibt es hier einen Link mit der Beschreibung von Traefik: https://doc.traefik.io/traefik/middlewares/basicauth/

Die Kurzform, erlaubt sind: (MD5, SHA1, or BCrypt)
Mit „htpasswd“ lässt sich ein passwort recht schnell erstellen zB.:
„htpasswd -c /home/pwww/.htpasswd jerry“ erzeugt eine Datei mit dem User und passwort.

Auch die oben aufgeführte Docker-compose Datei für Traefik wird im eigenen erstellten Verzeichnis gestartet mit: „docker-compose up -d“

Im selben Verzeichnis gibt es ein Unterverzeichnis „certs“ für evtl. benötigte Zertifikate:
„- ./certs:/data/tls-conf“
Ggf. müssen die Pfade der Verzeichnise aus der Docker-Compose Dateo oben individuell erstellt und angepasst werden!

 

 

 

 

 

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

zwölf + zwölf =

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.