name: musicark

services:
  musicark:
    image: musicark/musicark:latest
    container_name: musicark
    init: true
    restart: unless-stopped

    # 【可修改】左边的 13038 是网页访问端口，端口被占用时可改成 "23038:13038"。
    ports:
      - "13038:13038"

    # 运行参数：一般保持默认即可。
    environment:
      PUID: auto                         # 自动识别 NAS 用户 ID；特殊权限环境可改为数字
      PGID: auto                         # 自动识别 NAS 用户组 ID；特殊权限环境可改为数字
      UMASK: "022"                       # 新建文件的默认权限
      MUSICARK_AUTO_FIX_PERMISSIONS: "true"            # 自动处理数据目录权限
      MUSICARK_SESSION_COOKIE_SECURE: auto             # 自动选择会话 Cookie 模式
      MUSICARK_LOG_LEVEL: info                         # 日志级别
      MUSICARK_TRANSCODE_CACHE_MAX_BYTES: "5368709120" # 转码缓存上限：5 GiB
      TZ: Asia/Shanghai                  # 【可修改】按所在地修改时区

    volumes:
      # 【必须修改】将 /path/to/data 改成数据保存目录，用于数据库、封面和备份。
      - "/path/to/data:/data"
      # 【必须修改】将 /path/to/music 改成音乐文件所在目录。
      # 结尾的 rw 用于标签写回、整理和回收站；只需扫描与播放时可改为 ro。
      - "/path/to/music:/media/library:rw"

    # 安全配置：限制容器权限，通常不要修改。
    read_only: true
    tmpfs:
      - /tmp:size=128m,mode=1777
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - DAC_OVERRIDE
      - FOWNER
      - SETGID
      - SETUID

    # 健康检查：Docker 可据此判断服务是否正常。
    healthcheck:
      test: ["CMD", "/app/musicark", "healthcheck"]
      interval: 10s
      timeout: 3s
      retries: 12
      start_period: 10s
    stop_grace_period: 30s

    # 日志限制：避免长期运行占满磁盘。
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"
