神代綺凛の随波逐流

[Cloudreve] 树洞网络云盘 使用Docker一键部署


当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »

Cloudreve 是一款基于 ThinkPHP 构建的网盘系统,由“树洞外链”的作者开发,能够助您以较低成本快速搭建起公私兼备的网盘,并且还有能快速对接目前各家常用云储存等多项特性。

极光柠檬开发了这款网盘系统的 Docker 镜像,本站受邀转载其文章。

Cloudreve on Docker

[button color="info" icon="fa fa-cloud" url="https:\/\/cloudreve.org"]Cloudreve 官网[/button]

以下语气均照搬原文,我可没有那么拽啊!(。

几句废话

此镜像目前仍然处于开发中的阶段,不建议大量用在生产环境中!

如果有任何符合如下状况的问题:

请在此文章下留言,或者E-mail到:ilemonrain@ilemonrain.com,并请附带详细的错误信息,接受以下几种形式的信息:

不接受以下反馈以及E-mail来信:

镜像说明

此镜像基于ilemonrain/lamp作为母镜像,进行了修改以适配 Cloudreve 的环境要求(但我知道有些地方还是没优化到位……)。

到目前为止,此镜像已经集成:

计划中 (也可能鸽掉不做) 的功能:

部署教程

!> 由于 Docker 的特殊性(虚拟化要求),此教程不适用于 OpenVZ 虚拟化架构!OpenVZ 虚拟化的请等待我的后续部署教程!

1. 检测你的服务器虚拟化类型!

如何检测自己的服务器虚拟化类型:

返回以下结果,请继续往下阅读教程:

KVM
Xen
Xen-PV
Xen-HVM
VMware
不显示任何结果 (多数情况下是独服)

返回以下结果,说明此教程不适合你的服务器:

OpenVZ
Docker
乱七八糟的东西 (virt-what运行报错)

2. 安装Docker环境

首先,在你的服务器上,执行以下命令,安装 Docker 环境并设为开机自启动:

之后,运行命令:

docker info

来确定你的Docker是否成功启动。如果返回关于你的Docker的相关信息,就像这样:

[root@docker-host ~]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.13.1
(.........)

如果返回以下信息,则说明你的 Docker 没有正确启动:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

一个我常遇到的问题:selinux 权限限制。

遇到这种情况,请执行命令:

setenforce 0

然后再尝试重新启动 Docker 进程,很多时候都会奏效。

3. 下载Docker镜像到本地

执行以下命令,将 Docker 镜像从 Docker Hub 上拉回本地:

docker pull ilemonrain/cloudreve

拉取镜像的速度取决于你服务器的国际出口速度。

一般情况下,美帝的服务器基本上就是秒速拉回来,国内的服务器往往非常慢。

请参考这里 如何为国内服务器加速 Docker Hub 镜像拉取:

https://www.docker-cn.com/registry-mirror

等待拉取结束后,继续部署过程。

4. 启动Docker镜像

启动命令格式如下:

docker run [-d/-t] -p 80:80 -e CLOUDREVE_URL="[Cloudreve URL]" -v /cloudreve:/cloudreve --name docker-cloudreve ilemonrain/cloudreve

启动命令行说明:

-d/-t:决定是以后台运行模式启动或是前台监控模式启动。

-p 80:80:暴露你的 Docker 容器内部的 80 端口,到你容器外部的 80 端口。目前由于开发状态原因,不建议修改此端口。

-e CLOUDREVE_URL="[Cloudreve URL]":Cloudreve 绑定的地址,此参数务必严格填写,不能丢掉 http/https 前缀和结尾的斜杠!

-v /cloudreve:/cloudreve:将Docker容器中的/cloudreve目录,映射到宿主机的/cloudreve目录,冒号前面的是映射路径,冒号后的为容器中路径 (强烈建议进行映射,以确保容器中数据的安全,避免在容器意外崩溃时导致数据丢失)

容器中可以映射的路径:

--name docker-cloudreve:Docker容器的名称,可以自行修改

ilemonrain/cloudreve:启动的Docker镜像名称,请不要修改!

5. 启动过程

根据我目前设置的entrypoint.sh,目前的启动过程如下:

  1. 通过命令行,启动 Docker 容器
  2. 【开发中】Apache2 初始化
  3. MariaDB (MySQL) 初始化
  4. 安装Cloudreve (通过php composer)
  5. 安装 Google 2FA 验证器插件 (通过php composer)
  6. 安装 用于Google 2FA 验证器的二维码插件 (通过php composer)
  7. 输出容器相关的信息
  8. 以前台模式启动 Apache2

6. 常见问题 Q&A

联系/打赏作者