Hilfe bei QNAP Docker-Compose und Umgebungsdateien

Hallo. Ich versuche, LibreNMS mit dem Container Station zum Laufen zu bringen. Mit Hilfe eines Forum-Posters habe ich herausgefunden, dass ich die „Applications“-Funktion nutzen muss, um die Informationen aus der docker-compose.yml-Datei einzutragen. Ich versuche, dieses Beispiel zu verwenden, da ich es bereits auf einer Ubuntu-VM bei der Arbeit verwenden konnte: docker/examples/compose at master · librenms/docker · GitHub
Hierfür müssen sich allerdings zwei Variablendateien im selben Verzeichnis wie die docker-compose.yml befinden. Gibt es eine Möglichkeit, dies mit Container Station zu machen? Ich muss die .env und die librenms.env Dateien in diesem gleichen Github-Ordner erstellen. Ich habe auch den Code hier ausprobiert, aber die Datenbank wurde trotzdem nicht korrekt eingerichtet und es kommt zu einem Fehler bei der Datenbank, wenn man ihn verwendet: docker-librenms/docker-compose.yml at master · jarischaefer/docker-librenms · GitHub Dies ist der Fehler: ERROR: DB_HOST must be defined

Kannst du deine verwendete Compose-Datei posten (du kannst natürlich alle verwendeten Passwörter entfernen oder einfach durch Platzhalter ersetzen)

name: librenms

services:
  db:
    image: mariadb:10
    container_name: librenms_db
    command:
      - "mysqld"
      - "--innodb-file-per-table=1"
      - "--lower-case-table-names=1"
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
    volumes:
      - "./db:/var/lib/mysql"
    environment:
      - "TZ=${TZ}"
      - "MARIADB_RANDOM_ROOT_PASSWORD=yes"
      - "MYSQL_DATABASE=${MYSQL_DATABASE}"
      - "MYSQL_USER=${MYSQL_USER}"
      - "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
    restart: always

  redis:
    image: redis:7.2-alpine
    container_name: librenms_redis
    environment:
      - "TZ=${TZ}"
    restart: always

  msmtpd:
    image: crazymax/msmtpd:latest
    container_name: librenms_msmtpd
    env_file:
      - "./msmtpd.env"
    restart: always

  librenms:
    image: librenms/librenms:latest
    container_name: librenms
    hostname: librenms
    cap_add:
      - NET_ADMIN
      - NET_RAW
    ports:
      - target: 8000
        published: 8000
        protocol: tcp
    depends_on:
      - db
      - redis
      #- msmtpd
    volumes:
      - "./librenms:/data"
    env_file:
      - "./librenms.env"
    environment:
      - "TZ=${TZ}"
      - "PUID=${PUID}"
      - "PGID=${PGID}"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "DB_TIMEOUT=60"
    restart: always

  dispatcher:
    image: librenms/librenms:latest
    container_name: librenms_dispatcher
    hostname: librenms-dispatcher
    cap_add:
      - NET_ADMIN
      - NET_RAW
    depends_on:
      - librenms
      - redis
    volumes:
      - "./librenms:/data"
    env_file:
      - "./librenms.env"
    environment:
      - "TZ=${TZ}"
      - "PUID=${PUID}"
      - "PGID=${PGID}"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "DB_TIMEOUT=60"
      - "DISPATCHER_NODE_ID=dispatcher1"
      - "SIDECAR_DISPATCHER=1"
    restart: always

  syslogng:
    image: librenms/librenms:latest
    container_name: librenms_syslogng
    hostname: librenms-syslogng
    cap_add:
      - NET_ADMIN
      - NET_RAW
    depends_on:
      - librenms
      - redis
    ports:
      - target: 514
        published: 514
        protocol: tcp
      - target: 514
        published: 514
        protocol: udp
    volumes:
      - "./librenms:/data"
    env_file:
      - "./librenms.env"
    environment:
      - "TZ=${TZ}"
      - "PUID=${PUID}"
      - "PGID=${PGID}"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "DB_TIMEOUT=60"
      - "SIDECAR_SYSLOGNG=1"
    restart: always

  snmptrapd:
    image: librenms/librenms:latest
    container_name: librenms_snmptrapd
    hostname: librenms-snmptrapd
    cap_add:
      - NET_ADMIN
      - NET_RAW
    depends_on:
      - librenms
      - redis
    ports:
      - target: 162
        published: 162
        protocol: tcp
      - target: 162
        published: 162
        protocol: udp
    volumes:
      - "./librenms:/data"
    env_file:
      - "./librenms.env"
    environment:
      - "TZ=${TZ}"
      - "PUID=${PUID}"
      - "PGID=${PGID}"
      - "DB_HOST=db"
      - "DB_NAME=${MYSQL_DATABASE}"
      - "DB_USER=${MYSQL_USER}"
      - "DB_PASSWORD=${MYSQL_PASSWORD}"
      - "DB_TIMEOUT=60"
      - "SIDECAR_SNMPTRAPD=1"
    restart: always

Ich würde zuerst vereinfachen … verwende die YAMLS von hier

Ändere einfach den Port, damit deine QNAP-GUI nicht blockiert wird

version: '3.9'

services:
  web:
    image: jarischaefer/docker-librenms
    hostname: librenms
    ports:
      - "8000:80"
    volumes:
      - ./docker-persistence/logs:/opt/librenms/logs
      - ./docker-persistence/rrd:/opt/librenms/rrd
    environment:
      - APP_KEY=base64:7cVDlhFEZ1dyxIuP38Yy72YuXrcGg1ISwAwZ2dKt4Pk=
      - DB_HOST=db
      - DB_NAME=librenms
      - DB_USER=librenms
      - DB_PASS=librenms
      - POLLERS=16
      - BASE_URL=http://localhost
      - DAILY_ON_STARTUP=true
    links:
      - mysql:db
    depends_on:
      mysql:
        condition: service_healthy
  mysql:
    image: mysql:8.0
    command: --sql-mode=""
    ports:
      - "3306"
    volumes:
      - ./docker-persistence/mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_USER=librenms
      - MYSQL_PASSWORD=librenms
      - MYSQL_DATABASE=librenms
    healthcheck:
      test: "mysql -h localhost -u root -p$$MYSQL_ROOT_PASSWORD -e 'USE librenms'"
      interval: 5s
      timeout: 5s
      retries: 20

Wenn diese Minimalversion funktioniert, kannst du sie mit weiteren Optionen erweitern

Du kannst das, was du möchtest, nicht über die Container Station (die GUI) machen. Entweder du schreibst die Werte deiner Umgebungsvariablen direkt in dein Docker-Compose-Skript (wie oben von anderen vorgeschlagen), oder du erledigst das über die Kommandozeile. Verbinde dich per SSH mit deinem QNAP, erstelle einen Ordner in deinem Home-Verzeichnis, in dem du deine docker-compose.yaml-Datei und daneben eine .env-Datei anlegst, in der du deine Umgebungsvariablen definierst. Dann kannst du das Ganze mit docker compose -p your-project-name up -d deployen. Ganz einfach.

Funktioniert bei mir leider nicht:

unbekanntes Flag: --project-name

Obwohl die Hilfe von Docker Compose eindeutig angibt, dass dies ein gültiges Flag ist.