news 2026/8/24 6:29:09

Freyr-js Docker 部署:10 分钟搭好音乐下载容器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Freyr-js Docker 部署:10 分钟搭好音乐下载容器

Freyr-js Docker 部署:10 分钟搭好音乐下载容器

【免费下载链接】freyr-jsA tool for downloading songs from music streaming services like Spotify and Apple Music.项目地址: https://gitcode.com/gh_mirrors/fr/freyr-js

Freyr-js 是一款音乐下载工具,能从 Spotify、Apple Music 等流媒体抓取歌曲;用 Docker 部署可跳过繁琐的依赖配置。本文把安装、克隆、构建、启动串成一条编号流程,并讲清下载目录挂载与内存参数,10 分钟跑通首次下载。

📦 从克隆到启动:一条流程装好 Freyr-js

环境准备与部署三步合并成一条流程,跟着做即可。

1. 安装 Docker 并拉取源码先装好 Docker 与 Docker Compose(负责创建和编排容器),装完拉下源码并进入目录,后面所有命令都在这个目录执行。

sudo apt-get update && sudo apt-get install docker.io docker-compose -y sudo systemctl enable docker && sudo systemctl start docker git clone https://gitcode.com/gh_mirrors/fr/freyr-js && cd freyr-js

2. 构建镜像在源码目录执行构建,Dockerfile 走多阶段构建,先装依赖、精简代码,最终产出基于 Alpine 的轻量镜像。

docker build -t freyr-js:latest .

3. 启动容器这条命令一次性挂上下载目录、指定 Node 内存上限并给容器起名;容器以后台运行,随时可用docker logs freyr-container查看日志。

docker run -d --name freyr-container \ -v ~/freyr-music:/data \ -e "FREYR_NODE_ARGS=--max-old-space-size=4096" \ freyr-js:latest

⚙️ 下载目录挂载、内存参数与持久化

启动命令里的参数各司其职,理解它们能帮你避开大多数坑:

  • -v ~/freyr-music:/data:把宿主机目录挂到容器内的/data。Dockerfile 已把/data声明为持久化卷,歌曲都落在这里,容器重启也不会丢。挂载前先执行mkdir -p ~/freyr-music建好目录,否则 Docker 会以 root 自动创建,之后写入容易被拒。
  • -e "FREYR_NODE_ARGS=--max-old-space-size=4096":入口脚本 freyr.sh 会把它作为 Node 启动参数,给进程划出 4GB 堆内存,批量下载整张专辑时更稳。
  • 目录归属:容器内以 uid 1000 的 freyr 用户运行,宿主机目录要归属给它,写入才不会报权限错误,具体命令见文末排查清单。

🎵 用一条 Spotify 链接跑通首次下载

容器已在后台运行,用docker exec进去执行下载,把下面这条 Spotify 曲目链接换成你自己的即可。

docker exec -it freyr-container freyr https://open.spotify.com/track/127QTOFJsJQp5LbJbu3A1y

Freyr-js 会解析链接、抓取元数据与封面,最终把.m4a按「艺术家/专辑/曲目」结构保存到挂载目录~/freyr-music下。

🔍 Freyr-js 支持哪些音乐服务

它支持的服务由 src/services/ 目录下的模块决定,目前包含:

  • spotify.js:Spotify
  • apple_music.js:Apple Music
  • deezer.js:Deezer
  • youtube.js:YouTube

只要手里有这些平台的歌曲、专辑、艺人或播放列表链接,都可以丢给 Freyr-js 处理。

🛠️ 权限报错与网络异常排查清单

按顺序逐项排查,多数问题能直接定位:

  • 写入挂载目录报 Permission Denied:通常是宿主机目录归属不对,把目录交给容器用户即可。
sudo chown -R 1000:1000 ~/freyr-music
  • 下载卡住或连不上源:先确认容器网络正常;如果宿主机网络更稳,重建容器时加上--network=host直接走宿主机网络。
  • 内存不足被杀:把启动命令里的--max-old-space-size=4096调大到实际可用内存。

容器化部署的价值在于环境隔离、跨机器可移植、维护简单:同一镜像在任何装了 Docker 的机器上行为一致,升级或迁移时重建容器即可。现在按上面的编号流程走一遍,十分钟就能开始下载你的第一首歌。

【免费下载链接】freyr-jsA tool for downloading songs from music streaming services like Spotify and Apple Music.项目地址: https://gitcode.com/gh_mirrors/fr/freyr-js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 6:28:00

Java大厂面试:Spring Boot、Redis与微服务实战解析

1. 项目概述"Java大厂面试:Spring Boot、Redis和微服务实战案例"这个标题直指当前Java开发者最关心的三个核心领域:主流框架应用、缓存技术实践和分布式系统设计。作为从业十余年的Java老兵,我见过太多候选人在面试中折戟于这些看似…

作者头像 李华
网站建设 2026/8/24 6:25:52

STM32外部中断按键检测:从CubeMX配置到HAL库实战与消抖方案

1. 项目概述:从轮询到中断的思维跃迁在嵌入式开发里,按键检测是每个工程师都绕不开的基础功能。新手入门时,最直接的想法就是“轮询”:在主循环里不停地检查按键对应的GPIO引脚电平,一旦发现低电平(假设按键…

作者头像 李华
网站建设 2026/8/24 6:25:41

5 秒克隆一个声音:Real-Time-Voice-Cloning 实时语音克隆完整教程

5 秒克隆一个声音:Real-Time-Voice-Cloning 实时语音克隆完整教程 【免费下载链接】Real-Time-Voice-Cloning Clone a voice in 5 seconds to generate arbitrary speech in real-time 项目地址: https://gitcode.com/GitHub_Trending/re/Real-Time-Voice-Cloning…

作者头像 李华
网站建设 2026/8/24 6:25:39

Spring Boot性能优化实战与面试策略

1. 面试官为什么关心Spring Boot性能优化?当面试官抛出"Spring Boot项目性能优化"这个问题时,他实际上在考察三个维度的能力:第一,你对Spring Boot框架的深度理解;第二,你解决实际工程问题的思路…

作者头像 李华
网站建设 2026/8/24 6:25:33

FOC电机控制:从核心原理到系统框架的顶层视角解析

1. 项目概述:为什么我们需要“抛开细节”看FOC?聊到电机控制,尤其是无刷直流电机和永磁同步电机,FOC(磁场定向控制)几乎是绕不开的话题。随便一搜,满屏都是“STM32 FOC代码”、“DRV8313驱动电路…

作者头像 李华
网站建设 2026/8/24 6:22:13

科颜氏洗面奶源头工厂:讲点氨基酸洁面代工的底牌

拿着高端洗护品牌空瓶跑来找工厂,上来第一句就问“能不能对标大牌工艺架构”,这种客户我一个月能碰见二十个。但真正在美妆日化行业摸爬过十年的老板都清楚,找源头工厂要的不是那个壳子,是料体里那套结晶型氨基酸表活的架构功力。…

作者头像 李华