一、前言

我们这里应用的是道理鱼音乐。

特点:高音质 · 轻量化 · 自部署

支持高码率音频(DTS/DSD/APE/WMA 等)、音乐视频、有声书。自动封面缩略图、边播边转,提供 PostgreSQL / SQLite 双版本镜像,轻量易用。

官方地址:道理鱼音乐 · 多媒体播放与管理

客户端(箭头音乐amcfy):Home - Amcfy Music Player - NAS Music Player

二、部署部署教程

2.1 PostgreSQL 版部署


services:
  postgres:
    image: docker.1ms.run/postgres:16-alpine
    container_name: daoliyu-postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: "daoliyu"
      POSTGRES_USER: "daoliyu"
      POSTGRES_PASSWORD: "daoliyupassword"
      PGDATA: "/var/lib/postgresql/data/pgdata"
    command:
      - "postgres"
      - "-c"
      - "max_connections=200"
      - "-c"
      - "shared_buffers=256MB"
      - "-c"
      - "work_mem=32MB"
      - "-c"
      - "maintenance_work_mem=256MB"
      - "-c"
      - "checkpoint_completion_target=0.9"
      - "-c"
      - "wal_buffers=16MB"
      - "-c"
      - "port=5433"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U daoliyu -d daoliyu -p 5433"]
      interval: 10s
      timeout: 5s
      retries: 6
      start_period: 30s
    # ports:
    #  - "5433:5433"
    volumes:
      - ./docker-data/postgres:/var/lib/postgresql/data

  backend:
    image: docker.1ms.run/msmkls/daoliyu-music:latest
    container_name: daoliyu-music
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      NODE_ENV: production
      DB_PROVIDER: "pg"
      LOG_LEVEL: "${LOG_LEVEL:-info}"
      DEBUG: "${DEBUG:-true}"
    ports:
      - "5173:4000"
    volumes:
      - ./backend-storage:/app/storage
      - ./media:/data/media                    # 音乐目录,改成自己的目录
      #- ./media1:/data/media1                  # 自定义音乐目录(映射到 /data/ 下,记得对应类型)
      - ./audiobooks:/data/audiobooks          # 有声书,改成自己的目录
      #- ./audiobooks1:/data/audiobooks1        # 自定义有声书(映射到 /data/ 下,记得对应类型)
      - ./music-videos:/data/music-videos      # 音乐视频,改成自己的目录
      - ./playlists:/data/playlists            # 歌单目录,改成自己的目录
      - ./plugins:/plugins
    networks:
      default:
        aliases:
          - backend
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
      interval: 30s
      timeout: 5s
      retries: 5

2.2 SQLite 轻量版部署(我用的这个版本)

services:
  backend:
    image: docker.1ms.run/msmkls/daoliyu-music:latest
    container_name: daoliyu-music-sqlite
    restart: unless-stopped
    depends_on: {}
    environment:
      NODE_ENV: production
      DB_PROVIDER: "sqlite"
      PRISMA_SCHEMA: "${PRISMA_SCHEMA-prisma/schema.sqlite.prisma}"
      LOG_LEVEL: "${LOG_LEVEL:-info}"
      DEBUG: "${DEBUG:-true}"
    ports:
      - "5173:4000"
    volumes:
      - ./backend-storage:/app/storage
      - /share/collect:/data/media        # 音乐目录
      - /share/MyData:/data/media1        # 自定义音乐目录(映射到 /data/ 下,记得对应类型)
      - ./audiobooks:/data/audiobooks     # 有声书
      #- ./audiobooks1:/data/audiobooks1  # 自定义有声书(映射到 /data/ 下,记得对应类型)
      - ./music-videos:/data/music-videos # 音乐视频
      - ./playlists:/data/playlists       # 歌单目录
      - ./plugins:/plugins
    networks:
      default:
        aliases:
          - backend
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
      interval: 30s
      timeout: 5s
      retries: 5

三、使用教程

app