services: 360-player: container_name: 360-player build: context: . dockerfile: Dockerfile image: 360-player:latest restart: unless-stopped # 不對外開埠:只透過容器內網讓 nginx 連得到,外面一律走 HTTPS。 # 若要在區網用 IP 直連明文(會省掉憑證警告),自行加回: # ports: # - "127.0.0.1:${PORT:-8360}:8360" # 或綁區網 IP expose: - "8360" volumes: # 影片資料夾(NAS 上的實際路徑)→ 容器內 /videos,唯讀 - "${VIDEO_DIR:-/volume1/photo/Badminton}:/videos:ro" # 轉檔輸出 + probe 快取 → 容器內 /cache(需要可寫) - "${CACHE_DIR:-./cache}:/cache" environment: TZ: ${TZ:-Asia/Taipei} # CPU 轉檔時 libx264 的 preset;NAS CPU 弱可改 superfast / ultrafast(檔案會稍大) X264_PRESET: ${X264_PRESET:-veryfast} # 本機為 Intel J4025(UHD 600),已啟用 VAAPI 硬體轉檔; # 換到沒有 /dev/dri 的機器時要把下面兩行註解掉,否則容器起不來。 devices: - /dev/dri:/dev/dri 360-player-web: container_name: 360-player-web build: context: . dockerfile: docker/nginx/Dockerfile image: 360-player-web:latest restart: unless-stopped depends_on: - 360-player ports: - "${HTTPS_PORT:-8443}:8443" environment: TZ: ${TZ:-Asia/Taipei} NGINX_PORT: 8443 NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} SSL_CERT_DIR: /etc/nginx/certs SSL_CERT_FILE_NAME: ${SSL_CERT_FILE_NAME:-cert.pem} SSL_CHAIN_FILE_NAME: ${SSL_CHAIN_FILE_NAME:-chain.pem} SSL_KEY_FILE_NAME: ${SSL_KEY_FILE_NAME:-privkey.pem} UPSTREAM_HOST: 360-player UPSTREAM_PORT: 8360 volumes: # 憑證來源與 badminton-scoreboard 共用;DSM 續期後 entrypoint 會自動 reload - "${SSL_CERT_DIR:-/volume1/docker/certs}:/etc/nginx/certs:ro"