您好。我正在嘗試使用 Container Station 來運行 LibreNMS。透過論壇上一位用戶的幫助,我了解到需要使用「應用程式」來輸入 docker-compose.yml 文件資訊。我打算使用這個範例,因為我在公司 Ubuntu 虛擬機上成功用過:docker/examples/compose at master · librenms/docker · GitHub
這個範例要求在 docker-compose.yml 同一目錄下有兩個變數檔案。我想知道在 Container Station 裡是否有辦法做到這點?我需要在這個 GitHub 資料夾中建立 .env 和 librenms.env 檔案。
我也嘗試過這裡的程式碼,但資料庫還是沒正確設定,使用時會出現資料庫錯誤:docker-librenms/docker-compose.yml at master · jarischaefer/docker-librenms · GitHub
錯誤訊息如下:ERROR: DB_HOST must be defined
你可以貼出你使用過的 compose(當然可以移除任何用過的密碼,或直接用佔位符替換)。
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
我會先簡化……使用這裡的 YAML 檔案
只要把埠口改掉,避免阻擋你的 QNAP GUI
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
當這個最小化版本可以運作後,你就可以再加上其他選項來擴充
你無法在 Container Station(圖形介面)中完成你想做的事。你可以直接將環境變數的值硬編碼到你的 docker compose 腳本中(如上面其他人建議的),或者你可以從命令列執行這些操作。透過 SSH 連線到你的 QNAP,在你的家目錄中建立一個資料夾,然後在裡面建立 docker-compose.yaml 檔案,以及一個 .env 檔案來定義你的環境變數。接著你可以使用 docker compose -p your-project-name up -d 來部署。很簡單。
對我來說很遺憾無法運作:
未知的旗標:--project-name
儘管 docker compose help 明確指出這是一個有效的旗標。