1.简述
使用开源软件Nextcloud实现,总体部署是使用Dokcer+Nextcloud+mysql。
2.部署方案
2.1 安装Docker
依次执行以下命令:
(1)yum安装docker
yum install -y docker
(2) 启动Docker及设置Docker自启动
systemctl start docker
systemctl enable docker
2.2 下载Nextcloud镜像
依次执行以下命令:
(1)搜索nextcloud镜像
docker search nextcloud
(2)拉取官方镜像
docker pull docker.io/nextcloud
2.3 Docker启动mysql
docker run --name=nextcloud_db -e MYSQL_ROOT_PASSWORD=nextcloud -e MYSQL_DATABASE=nextcloud -e MYSQL_USER=nextcloud -e MYSQL_PASSWORD=nextcloud -v /var/www/nextcloud/mysqldb:/var/lib/mysql -d mysql:5
命令解释:
--name=nextcloud将容器命名为nextcloud_db
-v /var/www/nextcloud/mysqldb:/var/lib/mysql 将容器内mysql目录/var/lib/mysql挂在到宿主的/var/www/nextcloud/mysqldb目录。
mysql:5 使用mysql版本为5,因为nextcloud与mysql8直接运行有问题,调控难度大,暂时不用。
(2)查看mysql容器是否启动
docker ps –a
(3)进入mysql容器
docker exec -it nextcloud_db mysql -u nextcloud –pnextcloud
(4)创建数据库
CREATE DATABASE if not exists nextcloud;
exit;
2.4 启动Nextcloud容器
依次执行以下命令:
(1)开启NextCloud容器
docker run --name=nextcloud --link nextcloud_db:nextcloud_db -p 80:80 -v /var/www/nextcloud/data:/var/www/html/data -d nextcloud
命令解释:
--link nextcloud_db:nextcloud_db 连接名为nextcloud_db的容器作为数据库容器,分号后面的是该数据库容器在nextcloud容器中的别名。
-p 80:80 是将外部80端口映射到docker容器的80端口上。
-v 是将容器内的数据目录/var/www/html/data 挂载在宿主/var/www/nextcloud/data目录下
2.5 开始使用
登录http://ip:port/,需要选择Mysql,输入数据库地址为nextcloud_db。
3.数据备份及恢复
3.1 数据备份
(1)挂载的数据盘的备份
将主机/var/www/nextcloud 文件定期打包,进行备份。
(2)mysql数据的备份
docker exec -it nextcloud_db mysqldump -uroot -pnextcloud nextcloud > /var/www/nextcloud/bak.sql
将以上备份出的数据文件和sql文件放到备份机器上。
3.2 数据恢复
(1)挂载的数据盘的恢复
直接将打包的数据,拷贝到新建的docker的挂载目录下。
(2)mysql数据的恢复
依次执行以下命令
<1>拷贝备份的sql到容器内mysql的/temp 文件夹下
docker cp ./bak1.sql nextcloud_db:/tmp/
<2>进入docker的mysql
docker exec -it nextcloud_db /bin/bash
<3>登录mysql
mysql -u nextcloud –pnextcloud
<4>创建新的nextcloud数据库
create database if not exists nextcloud;
<5>使用数据库
use nextcloud;
<6>导入sql数据
source /tmp/bak.sql
以上操作完之后,登录网站即可。