Docker安装Seafile、Onlyoffice

docker安装Seafile、Onlyoffice

环境:CentOS 7.6 Docker18.06.3-ce已安装

  • 安装docker-compose

    1
    2
    curl -L https://github.com/docker/compose/releases/download/1.23.0-rc3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
  • 创建需要的目录

    1
    2
    3
    mkdir -p /seafile/data
    mkdir -p /seafile/db
    mkdir -p /seafile/db/db-backup

安装Seafile 6.3.4

  • 创建docker-compose.yml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
      cd /seafile
    vi docker-compose.yml
    ---输入以下内容---
    version: '2.0'
    services:
    memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    restart: always
    entrypoint: memcached -m 256
    networks:
    - seafile-net

    seafile:
    image: seafileltd/seafile:latest
    container_name: seafile
    restart: always
    ports:
    - "80:80"
    # - "443:443" # If https is enabled, cancel the comment.
    volumes:
    - /seafile/data:/shared # Requested, specifies the path to Seafile data persistent store.
    environment:
    - DB_HOST=db
    - DB_ROOT_PASSWD=boqii399 # Requested, the value shuold be root's password of MySQL service.
    # - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
    - SEAFILE_ADMIN_EMAIL=johnny@boqii.com # Specifies Seafile admin user, default is 'me@example.com'.
    - SEAFILE_ADMIN_PASSWORD=boqii399 # Specifies Seafile admin password, default is 'asecret'.
    - SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not.
    - SEAFILE_SERVER_HOSTNAME=172.16.54.254 # Specifies your host name if https is enabled.
    depends_on:
    - memcached
    networks:
    - seafile-net

    networks:
    seafile-net:
    ------------------
  • 安装Seafile

    1
    docker-compose -f docker-compose.yml up -d

安装Seafile7系列版本

  • 创建docker-compose.yml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
      cd  /seafile
    vi docker-compose.yml
    --- 输入以下内容---
    version: '2.0'
    services:
    db:
    image: mariadb:10.1
    container_name: seafile-mysql
    restart: always
    environment:
    - MYSQL_ROOT_PASSWORD=boqii399 # Requested, set the root's password of MySQL service.
    - MYSQL_LOG_CONSOLE=true
    volumes:
    - /seafile/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
    networks:
    - seafile-net

    memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    restart: always
    entrypoint: memcached -m 256
    networks:
    - seafile-net

    seafile:
    image: seafileltd/seafile-mc:latest
    container_name: seafile
    restart: always
    ports:
    - "80:80"
    # - "443:443" # If https is enabled, cancel the comment.
    volumes:
    - /seafile/data:/shared # Requested, specifies the path to Seafile data persistent store.
    environment:
    - DB_HOST=db
    - DB_ROOT_PASSWD=boqii399 # Requested, the value shuold be root's password of MySQL service.
    # - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
    - SEAFILE_ADMIN_EMAIL=johnny@boqii.com # Specifies Seafile admin user, default is 'me@example.com'.
    - SEAFILE_ADMIN_PASSWORD=boqii399 # Specifies Seafile admin password, default is 'asecret'.
    - SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not.
    - SEAFILE_SERVER_HOSTNAME=172.16.54.254 # Specifies your host name if https is enabled.
    depends_on:
    - db
    - memcached
    networks:
    - seafile-net

    networks:
    seafile-net:
    --------------------------
  • 安装Seafile

    1
    docker-compose -f docker-compose.yml up -d

安装onlyoffice

  • 创建需要的目录

    1
    mkdir /data/onlyoffice
  • 创建docker-compose.yaml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
      cd  /data/onlyoffice
    vi docker-compose.yml
    --- 输入以下内容---
    version: '2.0'
    services:
    onlyoffice-documentserver:
    container_name: onlyoffice
    restart: always
    image: onlyoffice/documentserver:latest
    # environment:
    # - AMQP_SERVER_URL=amqp://guest:guest@onlyoffice-activemq
    # - AMQP_SERVER_TYPE=activemq
    # stdin_open: true
    ports:
    - '8001:80'
    # - '443:443'
    # networks:
    # - onlyoffice

    # onlyoffice-activemq:
    # container_name: onlyoffice-activemq
    # image: webcenter/activemq:5.14.3
    # environment:
    # - ACTIVEMQ_USERS_guest=guest
    # - ACTIVEMQ_GROUPS_owners=guest
    # restart: always
    # networks:
    # - onlyoffice
    # expose:
    # - '5672'

    networks:
    onlyoffice:
    # driver: 'bridge'
    --------------------------
  • 安装onlyoffice
    docker-compose -f docker-compose.yml up -d

  • 启动容器
    docker start <容器名>

  • 开机自启动容器
    docker update --restart=always <容器名>

  • seafile系统配置

备份seafile数据

Seafile 6.3.4

  • 数据库备份

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
      cd /seafile/db/db-backup
    docker exec -ti seafile mysqldump -uroot --opt ccnet_db > ccnet_db.sql.$(date +"%F")
    docker exec -ti seafile mysqldump -uroot --opt seafile_db > seafile_db.sql.$(date +"%F")
    docker exec -ti seafile mysqldump -uroot --opt seahub_db > seahub_db.sql.$(date +"%F")
    --- 脚本---
    #!/bin/bash

    cd /seafile/db/db-backup

    for i in ccnet_db seafile_db seahub_db
    do
    docker exec -ti seafile mysqldump -uroot --opt $i > $i.sql.$(date +"%F")
    done

    # 清理30天前
    find . -name "*sql*" -mtime +30 -delete
    ------------
  • 数据备份
    rsync -avh --progress /seafile 目标目录(备份目录)

  • 数据恢复

    • 数据库恢复
      1
      2
      3
      4
      5
      cd /seafile/db/db-backup
      docker exec -ti seafile bash
      mysql ccnet_db < ccnet_db.sql.日期
      mysql seafile_db < seafile_db.sql.日期
      mysql seahub_db < seahub_db.sql.日期
  • 数据文件恢复
    rsync -avh --progress 备份目录 /seafile

Seafile 7版本系列

  • 数据库备份

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
      cd /seafile/db/db-backup
    docker exec -ti seafile-mysql mysqldump -uroot -pboqii399 --opt ccnet_db > ccnet_db.sql.$(date +"%F")
    docker exec -ti seafile-mysql mysqldump -uroot -pboqii399 --opt seafile_db > seafile_db.sql.$(date +"%F")
    docker exec -ti seafile-mysql mysqldump -uroot -pboqii399 --opt seahub_db > seahub_db.sql.$(date +"%F")
    --- 脚本---
    #!/bin/bash

    cd /seafile/db/db-backup

    for i in ccnet_db seafile_db seahub_db
    do
    docker exec -ti seafile-mysql mysqldump -uroot --opt $i > $i.sql.$(date +"%F")
    done

    # 清理30天前
    find . -name "*sql*" -mtime +30 -delete
    ------------
  • 数据备份
    rsync -avh --progress /seafile 目标目录(备份目录)

  • 数据恢复

    • 数据库恢复

      1
      2
      3
      4
      5
      6
      #方法1:
      docker exec -ti seafile-mysql /bin/sh -c " mysql -uroot -pboqii399 ccnet_db < /var/lib/mysql/db-back/ccnet_db.sql.2019-07-25"
      #方法2:
      docker exec -ti seafile-mysql bash
      mysql -uroot -pboqii399 seafile_db < /var/lib/mysql/db-back/seafile_db.sql.2019-07-25
      mysql -uroot -pboqii399 seahub_db < /var/lib/mysql/db-back/seahub_db.sql.2019-07-25
    • 数据文件恢复
      rsync -avh --progress 备份目录 /seafile