本文记录了我在CoreOS服务器上利用Docker部署NextCloud+MySQL实现私有云盘的过程。
环境
服务器:
阿里云学生机
CoreOS
本地:
MacBook Pro
macOS 10.14.3
方法
大体方案就是在Docker中分别建立两个容器,一个是MySQL,一个是NextCloud,将MySQL link到NextCloud上作为数据库来使用。
创建MySQL容器
docker run --name=nextcloud_db -e MYSQL_ROOT_PASSWORD=passwd -d mysql:5
这里使用mysql:5而非mysql:latest是因为,最新版本的MySQL好像更改了默认的加密方法,和NextCloud配合使用会产生一些错误。
我索性就采用了低版本的MySQL(参考了一些修改加密方法的博客但是没有效果啊 TAT)。
其中passwd部分请替换为你想使用的密码。
docker exec -it nextcloud_db mysql -u root -p
passwd: ....
mysql> CREATE DATABASE nextcloud;
mysql> exit;
这里是进入MySQL并创建一个新的数据库,命名为nextcloud(当然你可以改为自己喜欢的名字)。
创建NextCloud容器
docker run --name=nextcloud --link nextcloud_db:db -p 1080:80 -d nextcloud
使用这一行命令创建一个NextCloud容器并且将另一个容器“链接”过来作为数据库使用,在这个容器内部其地址被映射为db(可以修改为你喜欢的名字)。
这里我使用的就是NextCloud在Docker Hub上的官方镜像。
并且我将NextCloud内部的80端口映射到了外部的1080端口上,所以在浏览器中访问http://your_server_ip:1080就可以看到NextCloud界面了。
之后就参照提示在浏览器中完成设置即可。
在这里,我让NextCloud以root账户访问MySQL数据库(当然并不推荐这么做,但是我懒得创建一个新的MySQL账户了),密码就是passwd,数据库名就是nextcloud,数据库地址就是db。
后记
使用MySQL是因为NextCloud推荐这么做(尤其是在使用客户端及多用户功能时),我没有学习过数据库的知识,不知道为何默认的SQLite不被推荐使用。
NextCloud的所有文件会储存在 /var/lib/docker/volumes/nextcloud/ 下,即使容器损坏或被删除也不会消失,可以在这里找到。
编写本文时所有命令都是靠回忆写下的,但愿没有差错……