services:
backend:
image: msmkls/daoliyu-backend:latest
container_name: daoliyu-backend
restart: unless-stopped
environment:
DATABASE_PROVIDER: "sqlite"
DATABASE_URL: "file:/app/data/dev.db"
APP_PORT: 4000
ADMIN_DISPLAY_NAME: "${ADMIN_DISPLAY_NAME}"
ADMIN_EMAIL: "${ADMIN_EMAIL}"
ADMIN_PASSWORD: "${ADMIN_PASSWORD}"
LIBRARY_ROOT: "/data/media"
PLAYLISTS_IMPORT_ROOT: "/data/playlists"
REGISTRATION_OPEN: "true"
PLUGINS_DIR: "/plugins"
ACOUSTID_API_KEY: "${ACOUSTID_API_KEY}"
LASTFM_API_KEY: "${LASTFM_API_KEY}"
LASTFM_API_SECRET: "${LASTFM_API_SECRET}"
SPOTIFY_TOKEN: "${SPOTIFY_TOKEN}"
SPOTIFY_CLIENT_ID: "${SPOTIFY_CLIENT_ID}"
SPOTIFY_CLIENT_SECRET: "${SPOTIFY_CLIENT_SECRET}"
REDIS_URL: "redis://redis:6379/0"
LOG_LEVEL: "debug"
DEBUG: "true"
volumes:
# 下面冒号左侧是本地数据库文件夹,右侧是容器内路径,不要改动容器内路径
- /vol1/1000/Docker/nas-music/backend-data:/app/data
# 下面冒号左侧是本地数据文件夹,右侧是容器内路径,不要改动容器内路径
- /vol1/1000/Docker/nas-music/backend-storage:/app/storage
# 下面冒号左侧是本地音乐文件夹,右侧是容器内路径,不要改动容器内路径
- /vol3/1000/music:/data/media
# 下面冒号左侧是本地播放列表文件夹,右侧是容器内路径,不要改动容器内路径
- /vol1/1000/Docker/nas-music/playlists:/data/playlists
# 下面冒号左侧是本地插件文件夹,右侧是容器内路径,不要改动容器内路径(目前未启用不用动)
- /vol1/1000/Docker/nas-music/plugins:/plugins
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
interval: 30s
timeout: 5s
retries: 5
frontend:
image: msmkls/daoliyu-frontend:latest
container_name: daoliyu-frontend
restart: unless-stopped
depends_on:
- backend
ports:
# 5173是本地访问端口,可以自行修改,8080是容器内端口,不要改动
- "5973:8080"
redis:
image: redis:7-alpine
container_name: daoliyu-redis
restart: unless-stopped
command: ["redis-server", "--appendonly", "yes"]
volumes:
- redis_data:/data
volumes:
redis_data:
无法访问此网站
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf differs from the packaged version
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2025/10/10 08:43:51 [notice] 1#1: using the "epoll" event method
2025/10/10 08:43:51 [notice] 1#1: nginx/1.27.5
2025/10/10 08:43:51 [notice] 1#1: built by gcc 14.2.0 (Alpine 14.2.0)
2025/10/10 08:43:51 [notice] 1#1: OS: Linux 6.12.18-trim
2025/10/10 08:43:51 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2025/10/10 08:43:51 [notice] 1#1: start worker processes
2025/10/10 08:43:51 [notice] 1#1: start worker process 29
2025/10/10 08:43:51 [notice] 1#1: start worker process 30
2025/10/10 08:43:51 [notice] 1#1: start worker process 31
2025/10/10 08:43:51 [notice] 1#1: start worker process 32
2025/10/10 08:43:51 [notice] 1#1: start worker process 33
2025/10/10 08:43:51 [notice] 1#1: start worker process 34
2025/10/10 08:46:50 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
2025/10/10 08:46:50 [notice] 29#29: gracefully shutting down
2025/10/10 08:46:50 [notice] 29#29: exiting
2025/10/10 08:46:50 [notice] 29#29: exit
2025/10/10 08:46:50 [notice] 30#30: gracefully shutting down
2025/10/10 08:46:50 [notice] 31#31: gracefully shutting down
2025/10/10 08:46:50 [notice] 32#32: gracefully shutting down
2025/10/10 08:46:50 [notice] 32#32: exiting
2025/10/10 08:46:50 [notice] 31#31: exiting
2025/10/10 08:46:50 [notice] 30#30: exiting
2025/10/10 08:46:50 [notice] 33#33: gracefully shutting down
2025/10/10 08:46:50 [notice] 33#33: exiting
2025/10/10 08:46:50 [notice] 32#32: exit
2025/10/10 08:46:50 [notice] 30#30: exit
2025/10/10 08:46:50 [notice] 31#31: exit
2025/10/10 08:46:50 [notice] 33#33: exit
2025/10/10 08:46:50 [notice] 34#34: gracefully shutting down
2025/10/10 08:46:50 [notice] 34#34: exiting
2025/10/10 08:46:50 [notice] 34#34: exit
2025/10/10 08:46:50 [notice] 1#1: signal 17 (SIGCHLD) received from 30
2025/10/10 08:46:50 [notice] 1#1: worker process 30 exited with code 0
2025/10/10 08:46:50 [notice] 1#1: signal 29 (SIGIO) received
2025/10/10 08:46:50 [notice] 1#1: signal 17 (SIGCHLD) received from 34
2025/10/10 08:46:50 [notice] 1#1: worker process 29 exited with code 0
2025/10/10 08:46:50 [notice] 1#1: worker process 31 exited with code 0
2025/10/10 08:46:50 [notice] 1#1: worker process 33 exited with code 0
2025/10/10 08:46:50 [notice] 1#1: worker process 34 exited with code 0
2025/10/10 08:46:50 [notice] 1#1: signal 29 (SIGIO) received
2025/10/10 08:46:50 [notice] 1#1: signal 17 (SIGCHLD) received from 32
2025/10/10 08:46:50 [notice] 1#1: worker process 32 exited with code 0
2025/10/10 08:46:50 [notice] 1#1: exit
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf differs from the packaged version
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2025/10/10 08:47:02 [notice] 1#1: using the "epoll" event method
2025/10/10 08:47:02 [notice] 1#1: nginx/1.27.5
2025/10/10 08:47:02 [notice] 1#1: built by gcc 14.2.0 (Alpine 14.2.0)
2025/10/10 08:47:02 [notice] 1#1: OS: Linux 6.12.18-trim
2025/10/10 08:47:02 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2025/10/10 08:47:02 [notice] 1#1: start worker processes
2025/10/10 08:47:02 [notice] 1#1: start worker process 29
2025/10/10 08:47:02 [notice] 1#1: start worker process 30
2025/10/10 08:47:02 [notice] 1#1: start worker process 31
2025/10/10 08:47:02 [notice] 1#1: start worker process 32
2025/10/10 08:47:02 [notice] 1#1: start worker process 33
2025/10/10 08:47:02 [notice] 1#1: start worker process 34