MENU

docker alist aria2 解决 failed to transfer file

August 9, 2024 • Read: 89 • 随心笔记

最近安装了一个利用docker安装了一个 alist(https://alist.vizan.one:8888/)用于一些日常文件的分享,因为涉及离线下载于是又安装了一个 aria2,用的 https://github.com/P3TERX/Aria2-Pro-Docker 这个项目;同样是docker部署,安装一切正常。

但是配置好之后,alist使用aria2离线下载时报错,大概错误如下:

failed to transfer file: failed to get files: lstat /data/Aria2/temp/aria2/xxxxx: no such file or directory

参考了一下issue https://github.com/alist-org/alist/discussions/5907 看了aria2日志,提示下载成功;但为啥呢?其实大概意思就是路径不对,alist没有拿到刚才下载的临时文件;因为我的alist和aria2是两个独立的容器,虽然路径相同,但实际并不在一个文件体系内。

解决办法

将alist容器内的aria2临时下载目录映射到aria2容器内部即可解决

先说下我的环境,安装alist的时候目录映射参数是:-v /www/wwwroot/alist:/opt/alist/data,alist使用aria2下载时,对于宿主机而言的实际临时下载保存路径就是:/www/wwwroot/alist/temp/aria2 (可能没有aria2目录,手动建立一个即可)

得到docker aria2 启动时映射参数路径就是: -v /www/wwwroot/alist/temp/aria2:/opt/alist/data/temp/aria2 ,将这个参数加到aria2启动时的参数即可,例如参考:

docker run -d \
    --name aria2-pro \
    --restart unless-stopped \
    --log-opt max-size=1m \
    -e PUID=$UID \
    -e PGID=$GID \
    -e RPC_SECRET=<SECRET> \
    -e RPC_PORT=6800 \
    -e LISTEN_PORT=6888 \
    -v /www/wwwroot/dria2-pro-docker/config:/config \
    -v /www/wwwroot/dria2-pro-docker/downloads:/downloads \
    -v /www/wwwroot/alist/temp/aria2:/opt/alist/data/temp/aria2 \
    -p 127.0.0.1:8807:6800 \
    p3terx/aria2-pro

本质就是,将宿主机的同一个目录映射到两个容器内部,实现目录互通。