本教程采用前后端分离的部署方式,通过 Healthcheck(健康检查) 机制彻底解决 Docker 容器启动顺序导致的“数据库连接失败”或“前端 Nginx 502”报错。
🛠️ 第一步:创建文件夹与权限准备
在飞牛的 文件管理器 中进行以下操作,确保数据持久化:
进入存储空间路径(例如:/vol1/1000/Docker/)。
新建主文件夹:simple_sq_music_plus。
在主文件夹内新建两个子文件夹:
mysql_data:用于存放数据库数据。
music:用于存放下载的音乐文件。
权限建议:右键 simple_sq_music_plus 文件夹,确保其拥有读写权限,建议给予 777 权限以避免 Docker 容器写入失败(这步不做也可以)。
—
🚀 第二步:Docker Compose 编排部署
登录飞牛后台,打开 Docker 应用。
点击 项目 (Projects) -> 新增。
项目名称:输入 sqmusic。
项目路径:选择 /vol1/1000/Docker/simple_sq_music_plus。
配置方式:选择 “创建 docker-compose.yml”,粘贴以下代码:
YAML
version: '3.8'
services:
mysql:
image: mysql:5.7
container_name: sqmusic_mysql
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: sqmusicv3password
MYSQL_DATABASE: sqmusicv3
volumes:
- ./mysql_data:/var/lib/mysql
networks:
- sq-app-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-psqmusicv3password"]
interval: 5s
timeout: 5s
retries: 20
restart: always
sqmusic_main:
image: registry.cn-hangzhou.aliyuncs.com/sqdockler/simple_sq_music_plus:v3.0.31
container_name: sqmusic_main
environment:
- DB_IP=mysql
- DB_PORT=3306
- DB_NAME=sqmusicv3
- DB_USERNAME=root
- DB_PASSWORD=sqmusicv3password
volumes:
- ./music:/music
depends_on:
mysql:
condition: service_healthy
networks:
- sq-app-network
ports:
- "8099:8099"
restart: always
sqmusic_web:
image: registry.cn-hangzhou.aliyuncs.com/sqdockler/simple_sq_music_plus_web:v3.0.15
container_name: sqmusic_web
ports:
- "8096:80"
networks:
- sq-app-network
depends_on:
- sqmusic_main
restart: always
networks:
sq-app-network:
driver: bridge
—
⚙️ 第三步:初始化设置
启动确认:点击“完成”,等待容器启动。观察 Docker 界面,直到三个容器状态均显示为“运行中(Healthy)”。
访问地址:浏览器打开 http://飞牛IP:8096。
默认登录信息:
配置 Cookie(关键):
—
💡 维护小贴士
端口冲突:若 8096 端口被占用,请将 YAML 中 8096:80 左侧的数字改为其他未占用的端口。
音乐识别:若希望飞牛自带的音乐应用能扫描到歌曲,可将 sqmusic_main 下的 ./music 映射为飞牛的公共媒体文件夹。
重启命令:若需重启服务,进入该项目目录执行 docker-compose restart 即可。