OK 各位,
我正在嘗試讓另一個容器運作。我想探索 InvoiceNinja,看看是否適合我的業務。我已經讓容器及其支援應用程式運行起來,但我無法存取它。我已在 InvoiceNinja 論壇尋求協助,他們已告訴我所有他們知道的內容……但還是無法運作。他們建議我來這裡問問。所以也許你們這些 Compose 專家可以幫我找出我做錯了什麼……
這是我的 compose 檔案:
services:
app:
build:
context: .
image: invoiceninja/invoiceninja-debian:latest
restart: unless-stopped
env_file:
- /share/Container/invoiceninja/.env
environment:
- PUID=1000
- PGID=1000
- TZ=America/Chicago
volumes:
# - ./php/php.ini:/usr/local/etc/php/conf.d/invoiceninja.ini:ro
# - ./php/php-fpm.conf:/usr/local/etc/php-fpm.d/invoiceninja.conf:ro
# - ./supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf:ro
- /share/Container/invoiceninja/public:/var/www/html/public
- /share/Container/invoiceninja/storage:/var/www/html/storage
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
nginx:
image: nginx:alpine
restart: unless-stopped
ports:
- "8012:80"
volumes:
- ./share/Container/invoiceninja/nginx:/etc/nginx/conf.d:ro
- /share/Container/invoiceninja/public:/var/www/html/public:ro
- /share/Container/invoiceninja/storage:/var/www/html/storage:ro
depends_on:
app:
condition: service_healthy
mysql:
image: mysql:8
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- /share/Container/invoiceninja/mysql_data:/var/lib/mysql
healthcheck:
test:
[
"CMD",
"mysqladmin",
"ping",
"-h",
"localhost",
"-u${MYSQL_USER}",
"-p${MYSQL_PASSWORD}",
]
redis:
image: redis:alpine
restart: unless-stopped
volumes:
- /share/Container/invoiceninja/redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
由於這個應用程式使用 .env 檔案,這是該檔案(部分資訊已遮蔽):
# IN application vars
APP_URL=http://192.168.0.3:8012
APP_KEY=base64:7some_key_code
APP_ENV=production
APP_DEBUG=true
REQUIRE_HTTPS=false
PHANTOMJS_PDF_GENERATION=false
PDF_GENERATOR=snappdf
TRUSTED_PROXIES='*'
CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
FILESYSTEM_DISK=debian_docker
# DB connection
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=ninja
DB_USERNAME=ninja
DB_PASSWORD=*******
DB_ROOT_PASSWORD=********
DB_CONNECTION=mysql
# Create initial user
# Default to these values if empty
IN_USER_EMAIL=admin@example.com
IN_PASSWORD=changeme!
# IN_USER_EMAIL=
# IN_PASSWORD=
# Mail options
MAIL_MAILER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS='user@example.com'
MAIL_FROM_NAME='Self Hosted User'
# MySQL
MYSQL_ROOT_PASSWORD=*****
MYSQL_USER=ninja
MYSQL_PASSWORD=*****
MYSQL_DATABASE=ninja
# GoCardless/Nordigen API key for banking integration
NORDIGEN_SECRET_ID=
NORDIGEN_SECRET_KEY=
IS_DOCKER=true
SCOUT_DRIVER=null
#SNAPPDF_CHROMIUM_PATH=/usr/bin/google-chrome-stable
所以它啟動了,但如我所說——我無法存取網站。網頁無法顯示。在 InvoiceNinja 論壇,有位用戶協助我時說了以下內容:
3. 檢查 Nginx 設定
你有一個 Nginx 的 volume 映射:- ./nginx:/etc/nginx/conf.d:ro。
- 確保該資料夾內的設定檔正確指向內部的
app服務(通常如果用 FPM 是 9000 port,如果用 web-server variant 是 8000 port)。- 如果你使用標準的 Invoice Ninja docker-compose 範例,確保
fastcgi_pass設為app:9000。
所以我把 ./nginx:/etc/nginx/conf.d:ro 改成 ./share/Container/invoiceninja/nginx:/etc/nginx/conf.d:ro
然而,那個資料夾並沒有被建立,如果我進去檢查 Nginx 容器,我發現 etc/nginx/conf.d 其實被映射到 /share/ZFS530_DATA/.qpkg/container-station/data/application/invoiceninja/share/Container/invoiceninja/nginx
為什麼 QNAP 沒有按照我的指示,把容器映射到我要求的儲存位置?我不知道這是否能解決我的問題,但我想看看那個設定檔並且能更好地控制它。
而且當我用 SSH shell 進去那個目錄時,裡面什麼都沒有。所以 Nginx 沒有任何設定檔……
大家還有看到我這裡可能有什麼問題嗎?