Skip to main content

Das docker-compose.yml

Nun kann es endlich losgehen

Dieses Template wird immer mal aktualisiert und ist ausschließlich für eine Neuinstallation gedacht!

Der Updateprozess wird später erklärt!

Anlegen des Programmordners

Ich habe folgende Programmstruktur bei mir angelegt: /home/dockeruser/docker/nextcloud

Alle nachfolgenden Schritte in dieser Anleitung beziehen sich immer auf diese Struktur!

Folgende Kommandos fügt Ihr nun als dockeruser aus:

mkdir ~/docker && mkdir ~/docker/nextcloud && cd ~/docker/nextcloud

Nun solltest ich im folgenden Verzeichnis sein: 

/home/dockeruser/docker/nextcloud#

Erstellen der Datei docker-compose.yml

Mit folgendem Kommando öffnet Ihr den Editor für die docker-compose.yml:

nano docker-compose.yml

Nun wird folgender Code dort hinein kopiert.

services:
  db:
    image: postgres:16
    container_name: nextcloud-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: nextcloud
      POSTGRES_USER: nextcloud
      POSTGRES_PASSWORD: EIN_SICHERES_PASSWORT_FESTLEGEN
    volumes:
      - /home/dockeruser/docker/nextcloud/db:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    container_name: nextcloud-redis
    restart: unless-stopped
    command: ["redis-server", "--appendonly", "yes"]
    volumes:
      - /home/dockeruser/docker/nextcloud/redis:/data

  app:
    image: nextcloud:31-fpm
    container_name: nextcloud-app
    restart: unless-stopped
    depends_on:
      - db
      - redis
    environment:
      POSTGRES_HOST: db
      POSTGRES_DB: nextcloud
      POSTGRES_USER: nextcloud
      POSTGRES_PASSWORD: EIN_SICHERES_PASSWORT_FESTLEGEN
      REDIS_HOST: redis
    volumes:
      -  /home/dockeruser/docker/nextcloud/nextcloud:/var/www/html
      -  /home/dockeruser/docker/nextcloud/config:/var/www/html/config

  web:
    image: nginx:alpine
    container_name: nextcloud-web
    restart: unless-stopped
    depends_on:
      - app
    ports:
      - "8088:80"
    volumes:
      -  /home/dockeruser/docker/nextcloud/nextcloud:/var/www/html:ro
      -  /home/dockeruser/docker/nextcloud/config:/var/www/html/config:ro
      -  /home/dockeruser/docker/nextcloud/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro

  collabora:
    image: collabora/code:latest
    container_name: collabora
    restart: unless-stopped
    environment:
      - domain=office\\.mein\\.dyndns\\.local
      - username=EINEN_BENUTZERNAMEN_FESTLEGEN
      - password=EIN_SICHERES_PASSWORT_FESTLEGEN
      - extra_params=--o:ssl.enable=false --o:ssl.termination=true
    ports:
      - "9980:9980"

  cron:
    image: nextcloud:31-fpm
    container_name: nextcloud-cron
    restart: unless-stopped
    depends_on:
      - db
      - redis
    volumes:
      -  /home/dockeruser/docker/nextcloud/nextcloud:/var/www/html
      -  /home/dockeruser/docker/nextcloud/config:/var/www/html/config
    entrypoint: /cron.sh

WICHTIG: Im nano ändert Ihr vor den Speichern den Inhalt der Variablen folgender Zeilen 9, 32, 56, 58, 59

Ich betreibe einen Traefik Dienst im Docker der als ist ein HTTP-Reverse-Proxy und Load Balancer, der die Bereitstellung von Microservices erleichtert. Dieser läuft auf einer anderen Maschine 

Zeile 56 dient zur Definition FQDNS für Collabora. Die \\. müssen drin bleiben!