用 Docker 部署 Meting API:从阿里云到 HTTPS 域名的完整实操
部署一套自己的音乐接口服务,最省心、可复现的方式就是用 Docker 跑
Meting API。本文基于我在阿里云 ECS 上的真实踩坑经验,把从安装 Docker、拉取镜像、运行容器,到最后用 Nginx + 证书把 IP 升级成 HTTPS 域名的完整命令一次性给你,照着复制即可。
你将得到:
- 阿里云
Alibaba Cloud Linux 3下安装docker-ce的正确姿势(含$releasever的坑) - 拉不动
ghcr.io官方镜像时,git clone+ 本地docker build的备用方案 - 镜像加速器配置 + 运行容器 + 端口放行
- IP 地址 → 域名 → HTTPS 的完整升级路径
先讲清楚:为什么要用 Docker
Meting API 本身是一个轻量的音乐接口服务(配合 APlayer 播放器使用)。用 Docker 部署的好处是环境隔离、一键起停、换服务器无缝迁移——不用在系统里装一堆依赖,也方便后续用 docker-compose 编排。
想了解更完整的部署思路和细节,可参考我维护的完整教程:Docker部署Meting API服务(完整版)。
前置条件
- 一台阿里云 ECS(本文以
Alibaba Cloud Linux 3为例,CentOS/其他发行版原理相同) - 一个域名(用于最后的 HTTPS 升级;只想要 IP 访问可以跳过)
-
sudo权限
第 1 步:安装 Docker(阿里云官方源)
在阿里云机器上,最稳的方式是用阿里云内网镜像源。有两个容易踩的坑:
-
mirrors.cloud.aliyuncs.com是内网地址,ECS 上用速度最快; -
Alibaba Cloud Linux 3的$releasever=3,但docker-ce源是按 CentOS 8 组织的,所以要手动把变量替换成8。
# 1) 添加 docker-ce 源(用 curl,阿里云内网镜像) sudo curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' /etc/yum.repos.d/docker-ce.repo # 2) 关键:把 $releasever 替换成 8(等价于 releasever-adapter 插件的作用) sudo sed -i 's|\$releasever|8|g' /etc/yum.repos.d/docker-ce.repo # 3) 刷新缓存并安装 sudo dnf clean all sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 4) 启动并验证 sudo systemctl enable --now docker docker --version 第 2 步:获取镜像
优先直接拉官方镜像;如果 ghcr.io 拉不动(国内常见),就用代码本地构建兜底。
方式 A:直接拉官方镜像
docker pull ghcr.io/metowolf/meting-api:latest 方式 B:git clone 后本地构建
sudo dnf -y install git git clone https://github.com/whjin/Meting-API.git /opt/meting-api # 慢可换 https://ghfast.top/https://github.com/... cd /opt/meting-api docker build -t meting-api . 配置 Docker 镜像加速器(拉镜像慢时很有用):
# 1) 创建配置 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<'EOF' { "registry-mirrors": ["https://docker.m.daocloud.io"] } EOF # 2) 重启 Docker 生效 sudo systemctl daemon-reload sudo systemctl restart docker # 3) 重新构建 cd /opt/meting-api docker build -t meting-api . 想拿阿里云专属加速器地址(ECS 用户最稳):阿里云控制台 → 搜索"容器镜像服务 ACR" → 左侧"镜像工具 → 镜像加速器",页面会显示形如
https://xxxx.mirror.aliyuncs.com的专属地址,替换registry-mirrors即可。
第 3 步:运行容器
METING_URL 记得带上 :8000,METING_TOKEN 用随机密钥:
# 1) 删掉旧容器(-f 强制,保险) docker rm -f meting-api # 2) 重新运行 docker run -d --name meting-api \ -p 80:80 \ -e METING_URL=http://你的服务器公网IP:8000 \ -e METING_TOKEN=换成你自己的随机密钥 \ --restart unless-stopped \ ghcr.io/metowolf/meting-api:latest 生成随机密钥:
openssl rand -hex 32 第 4 步:放行端口
- 阿里云安全组:ECS 控制台 → 实例 → 安全组 → 入方向规则 → 添加 80 端口(或自定义端口,如 8000),授权对象
0.0.0.0/0。 - 系统防火墙:
sudo firewall-cmd --permanent --add-port=8000/tcp && sudo firewall-cmd --reload # 如果没开 firewalld 可忽略 80 端口被占用时,可改用 8000 端口。
第 5 步:验证
# 本机验证(用 localhost,不要 curl 自己的公网 IP) curl "http://localhost:8000/api?server=netease&type=search&id=周杰伦" 浏览器打开 http://你的公网IP:8000/api?server=netease&type=search&id=周杰伦 能返回 JSON,说明服务已经通了。
进阶:把 IP 升级为 HTTPS 域名
IP 直接访问不安全也不好记,升级到域名 + HTTPS 只需 4 步:
- 域名解析:在域名控制台添加一条 A 记录,指向服务器公网 IP;
- Nginx 反向代理:在
/etc/nginx/conf.d/meting.conf配置,同时包含 HTTP 和 HTTPS; - 签发证书:用
certbot自动申请并安装证书; - 更新容器:把
METING_URL改为域名地址并重启容器。
# 重载 Nginx 配置 sudo systemctl -s reload nginx # 重新安装证书 sudo certbot install --cert-name meting.wuhuajin.com # 验证 HTTPS 是否通 curl -I https://meting.wuhuajin.com/api?server=netease&type=search&id=周杰伦 # 更新容器 METING_URL 为域名 docker rm -f meting-api docker run -d --name meting-api \ -p 8000:80 \ -e METING_URL=https://meting.wuhuajin.com \ -e METING_TOKEN=你的密钥 \ --restart unless-stopped \ meting-api 完整命令与更多细节(含 Nginx 配置写法),见 完整版教程。
小结
- 用 阿里云内网源 装
docker-ce,记得把$releasever替换成8; - 拉不动镜像就 git clone + 本地 build,再配 镜像加速器;
- 容器端口映射、安全组 +
firewalld放行缺一不可; - 要上 HTTPS,走 A 记录 + Nginx 反代 + certbot 三步。
部署完成后,配合 APlayer 前端组件即可在前端页面播放音乐。如果你也在自建音乐 API 服务,欢迎收藏、转发这篇文章,也欢迎到原文评论区交流踩坑经验。

