Files
xymediavault-releases/compose.yaml
T

120 lines
5.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
postgres:
image: postgres:17-bookworm
container_name: xymedia-postgres
labels: &xymedia-managed-labels
com.xymediavault.managed: "true"
com.xymediavault.instance_id: "${XYMEDIA_INSTANCE_ID}"
com.xymediavault.install_dir: "${XYMEDIA_INSTALL_DIR}"
profiles: [local-db]
environment:
POSTGRES_DB: ${XYMEDIA_POSTGRES_DATABASE}
POSTGRES_USER: ${XYMEDIA_POSTGRES_USER}
POSTGRES_PASSWORD_FILE: /run/secrets/xymedia-postgres-password
secrets: [xymedia-postgres-password]
ports:
- "${XYMEDIA_POSTGRES_BIND_ADDRESS:-0.0.0.0}:${XYMEDIA_POSTGRES_PUBLIC_PORT}:5432"
volumes: ["${XYMEDIA_INSTALL_DIR}/data/postgres:/var/lib/postgresql/data"]
healthcheck:
test: [CMD-SHELL, "pg_isready -U ${XYMEDIA_POSTGRES_USER} -d ${XYMEDIA_POSTGRES_DATABASE}"]
interval: 5s
timeout: 5s
retries: 24
app:
# 应用容器通过宿主机公开端口连接 PostgreSQLDocker/NAS 网络和防火墙必须允许局域网/回环访问。
image: ${XYMEDIA_BOOTSTRAP_IMAGE:-git.keeper.work/admin/xymediavault-bootstrap:1}
container_name: xymedia-app
labels: *xymedia-managed-labels
entrypoint: [/usr/bin/tini, --]
command: [/releases/current/bin/xymedia-supervisor, --releases-dir, /releases, --config, /app/config.yaml]
environment:
XYMEDIA_POSTGRES_MODE: external
XYMEDIA_POSTGRES_HOST: ${XYMEDIA_POSTGRES_HOST}
XYMEDIA_POSTGRES_PORT: ${XYMEDIA_POSTGRES_PORT}
XYMEDIA_POSTGRES_DATABASE: ${XYMEDIA_POSTGRES_DATABASE}
XYMEDIA_POSTGRES_USER: ${XYMEDIA_POSTGRES_USER}
XYMEDIA_COMPONENT_RUNTIME: local
XYMEDIA_WEB_DIR: /releases/current/web/dist
XYMEDIA_XIAOYA_CONTROLLER_KEY_FILE: /run/secrets/xiaoya-controller-token
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- "${XYMEDIA_API_PORT:-18080}:8080"
- "${XYMEDIA_WEBDAV_PORT:-18081}:8081"
- "${XYMEDIA_TVBOX_PORT:-18082}:8082"
volumes:
- "${XYMEDIA_INSTALL_DIR}/data:/app/data"
- "${XYMEDIA_INSTALL_DIR}/components:/app/components"
- "${XYMEDIA_INSTALL_DIR}/releases:/releases"
- "${XYMEDIA_INSTALL_DIR}/config.yaml:/app/config.yaml:ro"
secrets: [xymedia-postgres-password, xiaoya-controller-token]
restart: unless-stopped
healthcheck:
test: [CMD, /releases/current/bin/xymediavault, healthcheck, --url, http://127.0.0.1:8080/api/health]
xiaoya-alist:
image: xiaoyaliu/alist:latest
profiles: [xiaoya]
container_name: ${XYMEDIA_XIAOYA_CONTAINER:-xymedia-xiaoya}
labels:
com.xymediavault.managed: "${XYMEDIA_XIAOYA_MANAGED:-false}"
com.xymediavault.instance_id: "${XYMEDIA_INSTANCE_ID}"
com.xymediavault.install_dir: "${XYMEDIA_INSTALL_DIR}"
ports: ["5678:80", "2345:2345", "2346:2346"]
volumes:
- "${XYMEDIA_XIAOYA_DATA_DIR:-${XYMEDIA_INSTALL_DIR}/xiaoya}:/data"
- "${XYMEDIA_XIAOYA_DATA_DIR:-${XYMEDIA_INSTALL_DIR}/xiaoya}/data:/www/data"
restart: unless-stopped
xiaoya-control:
image: debian:bookworm-slim
profiles: [xiaoya-control]
container_name: xymedia-controller
labels: *xymedia-managed-labels
entrypoint: [/controller/xymedia-edge]
command: [controller]
environment:
XYMEDIA_CONTROLLER_TOKEN_FILE: /run/secrets/xiaoya-controller-token
XYMEDIA_XIAOYA_CONTAINER: ${XYMEDIA_XIAOYA_CONTAINER:-xymedia-xiaoya}
XYMEDIA_XIAOYA_DATA_DIR: /xiaoya
XYMEDIA_ALIYUN_QR_URL: https://passport.aliyundrive.com/newlogin/qrcode
XYMEDIA_ALIYUN_OPEN_TOKEN_URL: https://openapi.alipan.com
XYMEDIA_ALIYUN_TV_BASE_URL: ${XYMEDIA_ALIYUN_TV_BASE_URL:-http://api.extscreen.com}
XYMEDIA_ALIYUN_TV_OPENAPI_BASE_URL: ${XYMEDIA_ALIYUN_TV_OPENAPI_BASE_URL:-https://openapi.alipan.com}
XYMEDIA_CONTROLLER_ADDR: "${XYMEDIA_CONTROLLER_BIND_ADDRESS:-0.0.0.0}:${XYMEDIA_CONTROLLER_PORT:-19090}"
XYMEDIA_HOST_ADDRESSES_FILE: /etc/xymedia/config/XYMEDIA_HOST_ADDRESSES
XYMEDIA_HOST_ADDRESSES: ${XYMEDIA_HOST_ADDRESSES:-}
ports: ["${XYMEDIA_CONTROLLER_BIND_ADDRESS:-0.0.0.0}:${XYMEDIA_CONTROLLER_PORT:-19090}:${XYMEDIA_CONTROLLER_PORT:-19090}"]
volumes:
- "${XYMEDIA_XIAOYA_DATA_DIR:-${XYMEDIA_INSTALL_DIR}/xiaoya}:/xiaoya"
- "${XYMEDIA_INSTALL_DIR}/config:/etc/xymedia/config:ro"
- "${XYMEDIA_INSTALL_DIR}/controller:/controller:ro"
- /var/run/docker.sock:/var/run/docker.sock
secrets: [xiaoya-controller-token]
restart: unless-stopped
app-migrate:
# 迁移容器同样通过宿主机公开端口连接;Docker/NAS 网络和防火墙必须允许局域网/回环访问。
image: ${XYMEDIA_BOOTSTRAP_IMAGE:-git.keeper.work/admin/xymediavault-bootstrap:1}
labels: *xymedia-managed-labels
entrypoint: [/releases/current/bin/xymediavault]
command: [migrate, --new, --config, /app/config.yaml]
environment:
XYMEDIA_POSTGRES_MODE: external
XYMEDIA_POSTGRES_HOST: ${XYMEDIA_POSTGRES_HOST}
XYMEDIA_POSTGRES_PORT: ${XYMEDIA_POSTGRES_PORT}
XYMEDIA_POSTGRES_DATABASE: ${XYMEDIA_POSTGRES_DATABASE}
XYMEDIA_POSTGRES_USER: ${XYMEDIA_POSTGRES_USER}
XYMEDIA_EXTERNAL_MIGRATION_CONFIRM: ${XYMEDIA_EXTERNAL_MIGRATION_CONFIRM:-YES}
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- "${XYMEDIA_INSTALL_DIR}/data:/app/data"
- "${XYMEDIA_INSTALL_DIR}/releases:/releases:ro"
- "${XYMEDIA_INSTALL_DIR}/config.yaml:/app/config.yaml:ro"
secrets: [xymedia-postgres-password, xiaoya-controller-token]
profiles: [migration]
restart: "no"
secrets:
xymedia-postgres-password:
file: ${XYMEDIA_INSTALL_DIR}/secrets/xymedia-postgres-password
xiaoya-controller-token:
file: ${XYMEDIA_INSTALL_DIR}/secrets/xiaoya-controller-token