在CentOS下利用Docker一键安装seafile
Posted FightingForBetter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CentOS下利用Docker一键安装seafile相关的知识,希望对你有一定的参考价值。
官方教程写的不够详细,特记录一下。
1. 安装docker及docker-compose
具体见本博客相关文章。
2.下载并修改一键安装脚本
https://docs.seafile.com/d/cb1d3f97106847abbf31/files/?p=/docker/pro-edition/docker-compose.yml
1 version: ‘2.0‘ 2 services: 3 db: 4 image: mariadb:10.1 5 container_name: seafile-mysql 6 environment: 7 - MYSQL_ROOT_PASSWORD=db_dev # MySQL root 用户的密码 Requested, set the root‘s password of MySQL service. 8 - MYSQL_LOG_CONSOLE=true 9 volumes: 10 - /opt/seafile-mysql/db:/var/lib/mysql # 持久化存储 MySQL 数据的 volumes 目录 Requested, specifies the path to MySQL data persistent store. 11 networks: 12 - seafile-net 13 14 memcached: 15 image: memcached:1.5.6 16 container_name: seafile-memcached 17 entrypoint: memcached -m 256 18 networks: 19 - seafile-net 20 21 elasticsearch: 22 image: seafileltd/elasticsearch-with-ik:5.6.16 23 container_name: seafile-elasticsearch 24 environment: 25 - discovery.type=single-node 26 - bootstrap.memory_lock=true 27 - "ES_JAVA_OPTS=-Xms1g -Xmx1g" 28 ulimits: 29 memlock: 30 soft: -1 31 hard: -1 32 mem_limit: 2g 33 volumes: 34 - /opt/seafile-elasticsearch/data:/usr/share/elasticsearch/data # 持久化存储 Elasticsearch 索引数据的 volumes 目录Requested, specifies the path to Elasticsearch data persistent store. 35 networks: 36 - seafile-net 37 38 seafile: 39 image: docker.seafile.top/seafileltd/seafile-pro-mc:latest 40 container_name: seafile 41 ports: 42 - "80:80" 43 # - "443:443" # If https is enabled, cancel the comment. 44 volumes: 45 - /opt/seafile-data:/shared # 持久化存储 Seafile 数据的 volumes 目录 Requested, specifies the path to Seafile data persistent store. 46 environment: 47 - DB_HOST=db 48 - DB_ROOT_PASSWD=db_dev # Requested, the value shuold be root‘s password of MySQL service. 49 # - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone. 50 - SEAFILE_ADMIN_EMAIL=me@example.com # 管理员账号Specifies Seafile admin user, default is ‘me@example.com‘ 51 - SEAFILE_ADMIN_PASSWORD=asecret # Specifies Seafile admin password, default is ‘asecret‘ 52 - SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not 53 - SEAFILE_SERVER_HOSTNAME=example.seafile.com # Specifies your host name if https is enabled 54 depends_on: 55 - db 56 - memcached 57 - elasticsearch 58 networks: 59 - seafile-net 60 61 networks: 62 seafile-net:
根据您的实际环境修改该文件。尤其是以下几项配置:
-
MySQL root 用户的密码 (MYSQL_ROOT_PASSWORD and DB_ROOT_PASSWD)
-
持久化存储 MySQL 数据的 volumes 目录 (volumes)
-
持久化存储 Seafile 数据的 volumes 目录 (volumes)
-
持久化存储 Elasticsearch 索引数据的 volumes 目录 (volumes)
3. 如果按照专业版的话
注册帐号,打开seafile的英文网页,去下载区,有如下信息
You can download pro editions from https://download.seafile.com/d/×××××××××/?p=/pro.
If you are deploying Seafile Pro with Docker, type docker login docker.seadrive.org
, then input username seafile
, password zj×××××dZ=u×××uWS
.
必须有此帐号登录过程,不然第4步执行过程中会被拒绝。
4. 安装
在 docker-compose.yml
文件所在的目下执行以下命令启动 Seafile 服务
docker-compose up -d
根据网速不同,需要等待些许时间,等容器首次启动时的初始化操作完成后,您就可以在浏览器上访问http://seafile.example.com
来打开 Seafile 主页。
Seafile 目录结构
/shared
共享卷的挂载点,您可以选择在容器外部存储某些持久性信息.在这个项目中,我们会在外部保存各种日志文件和上传数据。 这使您可以轻松重建容器而不会丢失重要信息。
-
/shared/seafile: Seafile 服务的配置文件,日志文件以及数据文件
-
/shared/seafile/logs: Seafile 服务运行产生的日志文件目录。比如您可以在
/shared/seafile/logs/seafile.log
文件中看到 seaf-server 的日志 -
/shared/seafile/seafile-data: 如果您没有配置S3或者OSS等对象存储,那么用户上传的数据将会存放到该目录下。
-
-
/shared/logs: 日志目录
-
/shared/logs/var-log: 我们将容器内的
/var/log
链接到本目录。您可以在/shared/logs/var-log/nginx/
中找到 nginx 的日志文件
-
-
/shared/ssl: 存放证书的目录,默认不存在
备份和恢复
目录结构
我们假设您的 seafile 数据卷路径是 /opt/seafile-data
,并且您想将备份数据存放到 /opt/seafile-backup
目录下。
您可以创建一个类似以下 /opt/seafile-backup
的目录结构:
/opt/seafile-backup
---- databases/ 用来存放 MySQL 容器的备份数据
---- data/ 用来存放 Seafile 容器的备份数据
要备份的数据文件:
/opt/seafile-data/seafile/conf # configuration files
/opt/seafile-data/seafile/seafile-data # data of seafile
/opt/seafile-data/seafile/seahub-data # data of seahub
备份数据
步骤:
-
备份 MySQL 数据库数据;
-
备份 Seafile 数据目录;
-
备份数据库:
# 建议每次将数据库备份到一个单独的文件中。至少在一周内不要覆盖旧的数据库备份。
cd /opt/seafile-backup/databases
docker exec -it seafile-mysql mysqldump -uroot --opt ccnet_db > ccnet_db.sql
docker exec -it seafile-mysql mysqldump -uroot --opt seafile_db > seafile_db.sql
docker exec -it seafile-mysql mysqldump -uroot --opt seahub_db > seahub_db.sql
-
备份 Seafile 资料库数据:
-
直接复制整个数据目录
cp -R /opt/seafile-data/seafile /opt/seafile-backup/data/
cd /opt/seafile-backup/data && rm -rf ccnet
-
使用 rsync 执行增量备份
rsync -az /opt/seafile-data/seafile /opt/seafile-backup/data/
cd /opt/seafile-backup/data && rm -rf ccnet
-
恢复数据
-
恢复数据库:
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
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot ccnet_db < /tmp/ccnet_db.sql"
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seafile_db < /tmp/seafile_db.sql"
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seahub_db < /tmp/seahub_db.sql"
-
恢复 seafile 数据:
cp -R /opt/seafile-backup/data/* /opt/seafile-data/seafile/
以上是关于在CentOS下利用Docker一键安装seafile的主要内容,如果未能解决你的问题,请参考以下文章