自定义docker实现nextcloud集成离线下载

NextCloud拥有很多好用的插件,比如使用ocDownloader插件能实现离线下载。但是在使用官方docker镜像安装ocDownloader插件后,使用中会出现问题。原因是ocDownloader依赖aria2c,在容器里安装aria2c要做到自启动有点麻烦,另外还有下载目录的权限问题。所以我基于官方apache 13.0.4 镜像进行了修改。源码在此,可以使用:docker pull registry.cn-hangzhou.aliyuncs.com/lefer/nextcloud拉取镜像。以下是修改的几个关键点。

  • 在dockerfile里新增安装aria2wgetgosu

  • 新增aria2c的相关目录和文件

    1
    2
    3
    4
    5
    6
    mkdir -p /var/log/aria2c;
    mkdir -p /var/local/aria2c;
    echo '' > /var/log/aria2c/aria2c.log;
    echo '' > /var/local/aria2c/aria2c.sess;
    chown www-data.www-data -R /var/log/aria2c /var/local/aria2c;
    chmod 770 -R /var/log/aria2c /var/local/aria2c;
  • 修改容器的CMD,增加启动aria2c的命令,并指定使用www-data用户

    1
    CMD ["sh","-c","gosu www-data aria2c --enable-rpc --rpc-allow-origin-all -c -D --log=/var/log/aria2c/aria2c.log --check-certificate=false --save-session=/var/local/aria2c/aria2c.sess --save-session-interval=2 --continue=true --input-file=/var/local/aria2c/aria2c.sess --rpc-save-upload-metadata=true --force-save=true --log-level=warn;apache2-foreground"]