Bantuan untuk QNAP docker-compose dan file lingkungan

Halo. Saya sedang mencoba menjalankan librenms menggunakan Container Station. Dengan bantuan dari salah satu anggota forum, saya mengetahui bahwa saya perlu menggunakan “Applications” untuk memasukkan informasi file docker-compose.yml. Saya mencoba menggunakan file ini karena saya berhasil menggunakannya di VM Ubuntu di tempat kerja. docker/examples/compose at master · librenms/docker · GitHub
Namun, ini membutuhkan dua file variabel yang harus berada di direktori yang sama dengan docker-compose.yml. Apakah ada cara untuk melakukan ini dengan Container Station? Saya perlu membuat file .env dan librenms.env di folder github yang sama. Saya juga sudah mencoba kode di sini, tetapi tetap saja database-nya tidak berjalan dengan benar dan muncul error pada db jika digunakan. docker-librenms/docker-compose.yml at master · jarischaefer/docker-librenms · GitHub Ini adalah error-nya: ERROR: DB_HOST must be defined

Bisakah Anda memposting file compose yang Anda gunakan (tentu saja Anda dapat menghapus kata sandi yang digunakan atau cukup menggantinya dengan placeholder)

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

Saya akan menyederhanakan terlebih dahulu .. gunakan YAML dari sini

Cukup ubah port agar tidak menghalangi GUI QNAP Anda

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

Jika versi minimal ini sudah berjalan, Anda dapat menambah opsi tambahan

Anda tidak dapat melakukan apa yang Anda inginkan dari Container Station (GUI). Anda bisa langsung menuliskan nilai dari variabel lingkungan Anda ke dalam skrip docker compose (seperti yang disarankan oleh orang lain di atas), atau Anda melakukannya dari command line. SSH ke QNAP Anda, buat folder di direktori home Anda, lalu buat file docker-compose.yaml dan di sebelahnya file .env tempat Anda mendefinisikan variabel lingkungan. Setelah itu, Anda dapat melakukan deploy menggunakan docker compose -p your-project-name up -d. Mudah.

Sayangnya tidak berhasil untuk saya:

unknown flag: --project-name

Padahal bantuan docker compose dengan jelas menunjukkan bahwa ini adalah flag yang valid.