注意:官方文档最后一步恢复资料库数据多加了一个目录。
## 第一步:安装 docker-compose
yum install docker-compose -y
## 第二步:下载 docker-compose.yml 文件,并进行相关配置
# 文件链接
https://docs.seafile.com/d/cb1d3f97106847abbf31/files/?p=/docker/docker-compose.yml
vim docker-compose.yml # 根据需要改动中文注释的部分。
-------------------------------------------
version: '2.0'
services:
db:
image: mariadb:10.5
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=db_dev # mysql 的 root 密码
- MYSQL_LOG_CONSOLE=true
volumes:
- /opt/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
networks:
- seafile-net
memcached:
image: memcached:1.6
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:latest
container_name: seafile
ports:
- "80:80"
# - "443:443" # If https is enabled, cancel the comment.
volumes:
- /opt/seafile-data:/shared # seafile 的数据存放目录。
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=db_dev # MySQL 的 root 账号密码。
# - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
- SEAFILE_ADMIN_EMAIL=me@example.com # 默认的用户名
- SEAFILE_ADMIN_PASSWORD=asecret # 默认的密码
- SEAFILE_SERVER_LETSENCRYPT=false # Whether use letsencrypt to generate cert.
- SEAFILE_SERVER_HOSTNAME=seafile.example.com # 本机的IP地址。
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
-----------------------------------------------------
## 第三步:安装 seafile
docker-compose up -d # 注意:当前目录下必须要有 docker-compose.yml 文件
/opt/seafile-data:/shared
的/opt/seafile/seafile
目录。## 备份数据库
mkdir -p /opt/seafile-backup/databases && cd /opt/seafile-backup/databases # 创建数据库备份目录
docker exec -it seafile-mysql mysqldump -uroot -p** --opt ccnet_db > ccnet_db.sql # -p 后面跟MySQL数据库密码,注意没有空格。
docker exec -it seafile-mysql mysqldump -uroot -p** --opt seafile_db > seafile_db.sql
docker exec -it seafile-mysql mysqldump -uroot -p** --opt seahub_db > seahub_db.sql
## 备份 seafile 资料库的数据
mkdir -p cp -R /opt/seafile-backup/data/ && /opt/seafile-data/seafile /opt/seafile-backup/data/
cd /opt/seafile-backup/data && rm -rf ccnet
如果通过下面的恢复数据操作无误,可以使用 contab 做一个定时备份。
vim seafile-backup.sh
--------------------------------
## 备份数据库
mkdir -p /opt/seafile-backup/databases && cd /opt/seafile-backup/databases # 创建数据库备份目录
docker exec -it seafile-mysql mysqldump -uroot -p** --opt ccnet_db > ccnet_db.sql # -p 后面跟MySQL数据库密码,注意没有空格。
docker exec -it seafile-mysql mysqldump -uroot -p** --opt seafile_db > seafile_db.sql
docker exec -it seafile-mysql mysqldump -uroot -p** --opt seahub_db > seahub_db.sql
## 备份 seafile 资料库的数据
mkdir -p /opt/seafile-backup/data/ && cp -R /opt/seafile-data/seafile /opt/seafile-backup/data/
cd /opt/seafile-backup/data/seafile && rm -rf ccnet
--------------------------------
corntab -e
------------------------------
# seafile 定时备份
0 23 * * * sh seafile-bakup.sh
------------------------------
## 将本地的 sql 传至 seafile-mysql
docker cp /opt/seafile-backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql
docker cp /opt/seafile-backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql
docker cp /opt/seafile-backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql
## 将 seafile-mysql 上的 sql 导入数据库
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** ccnet_db < /tmp/ccnet_db.sql"
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** seafile_db < /tmp/seafile_db.sql"
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** seahub_db < /tmp/seahub_db.sql"
## 恢复资料库数据
cp -R /opt/seafile-backup/data/* /opt/seafile-data/