【Seatable部署安装】Docker安装Seatable 4.3保姆级教程,并且完美实现更换服务器、IP的数据迁移

07-19 1564阅读

目录

  • 操作系统选定
    • Docker安装
    • Seatable安装
    • -------王炸篇:服务器、IP更换教程,怎么进行数据迁移?-------
        • 该方法,将可以直接在新服务器、新IP上使用原来数据,无论文字还是图片、文件等都能正常使用,实现100%迁移(数据文件映射目录需要和上文的安装保持一致,如果不一致,请自行从容器中取出数据文件,避免删除没了)
        • 第一步,停掉正在跑的所有容器,并删除
        • 第二步,备份seatable整个文件夹
        • 第三步,删除seatable文件夹下的mysql-data 和 seatable-data
        • 第四步,进入/root/seatable文件夹,编辑docker-compose.yml的环境变量文件.env,将SEATABLE_SERVER_HOSTNAME更改为新的IP,保存退出
        • 第五步,在/root/seatable文件夹运行docker-compose.yml文件,创建seatable容器
        • 第六步,停掉刚创建的容器
        • 第七步,将新创建的容器的数据文件夹,用刚刚进行备份的seatable_bak_20240428的对应数据文件夹进行替换
        • 第八步,启动seatable服务
        • 第九步,域名转换表格中的文件、图片等链接IP,如果不转换则无法在Base表格中查看、下载图片文件等,此步骤非常重要
        • 第九步,浏览器登录网站,验证是否迁移成功!

          操作系统选定

          目前我用的是Ubuntu-22.04.4-live-server-amd64版本,点击访问Ubuntu官网,点击直接下载Ubuntu-22.04.4-live-server-amd64

          当然,只要使用的其他操作系统可以支持Docker,基本都是可以的。

          Docker安装

          Step 1:根据上述Ubuntu操作系统环境,使用如下命令安装Docker

          sudo snap install docker
          

          或者

          sudo apt install docker
          

          上述二者命令均可安装docker,使用其中一种即可(建议用snap方式,方便简洁稳定,可直接开机自启动,并可直接运行docker-compose.yml文件)。

          Step 2:安装完成后,通过如下命令查看docker版本查看是否成功

          docker -v
          

          显示结果为

          【Seatable部署安装】Docker安装Seatable 4.3保姆级教程,并且完美实现更换服务器、IP的数据迁移

          Step 3:设置Docker开机自启动

          如果通过snap方式安装,则Docker天然为开机自启动,不用额外设置。

          如果通过apt方式安装,则按照如下命令进行设置Docker开机自启动:

          systemctl enable docker.service
          

          Seatable安装

          接下来将通过Docker-compose文件进行安装。

          Step 1:编辑docker-compose文件:

          进入服务器seatable映射目录(我的目录为/root/seatable),新建两个文件.env和docker-compose.yml,其中.env文件是docker-compose.yml的环境变量文件。

          • 新建文件.env
            vim .env
            

            因为.env为隐藏文件,“ls”命令无法显示,要想查看需要使用如下命令:

            ll -a
            

            .env文件内容填充如下(自己安装的话需至少更改以下文件的SEATABLE_SERVER_HOSTNAME、SEATABLE_ADMIN_EMAIL、SEATABLE_ADMIN_PASSWORD)

            COMPOSE_FILE='docker-compose.yml'
            COMPOSE_PATH_SEPARATOR=','
            SEATABLE_IMAGE=seatable/seatable-developer:latest
            SEATABLE_VOLUMES=/root/seatable/seatable-data
            SEATABLE_MYSQL_VOLUMES=/root/seatable/mysql-data
            SEATABLE_MYSQL_DB_HOST=mariadb
            SEATABLE_MYSQL_ROOT_PASSWORD=abcd1234
            TIME_ZONE='Asia/Shanghai'
            SEATABLE_SERVER_HOSTNAME=XXX.XXX.XXX.XXX
            SEATABLE_SERVER_PROTOCOL=http
            SEATABLE_SERVER_LETSENCRYPT=False
            SEATABLE_SSL_PORT=443
            SEATABLE_ADMIN_EMAIL=149662365@gmail.com
            SEATABLE_ADMIN_PASSWORD=abcd1234
                                                 
            

            上面参数备注:

            SEATABLE_IMAG:镜像资源标志,将拉取最新的seatable社区版镜像

            SEATABLE_VOLUMES:seatable数据文件映射到物理服务器的地址,改为你们自己需要的地址即可,也可沿用我自己的地址

            SEATABLE_MYSQL_VOLUMES:同上,是seatable使用的MySQL地址

            SEATABLE_MYSQL_ROOT_PASSWORD:数据库密码,用户名默认为root

            SEATABLE_SERVER_HOSTNAME:seatable所在服务器的IP地址

            SEATABLE_SSL_PORT:Https访问地址

            SEATABLE_ADMIN_EMAIL:seatable网站的管理员用户账号

            SEATABLE_ADMIN_PASSWORD:seatable网站的管理员用户密码

            • 同级目录下新建文件docker-compose.yml
              vim docker-compose.yml
              

              docker-compose.yml填充如下:

              services:
                seatable-server:
                  image: ${SEATABLE_IMAGE:-seatable/seatable-developer:latest}
                  restart: unless-stopped
                  container_name: seatable
                  ports:
                    - 80:80
                    - ${SEATABLE_SSL_PORT:-}:443
                  volumes:
                    - "${SEATABLE_VOLUMES:-/opt/seatable/seatable-data}:/shared"
                  environment:
                    - DB_HOST=${SEATABLE_MYSQL_DB_HOST:-mariadb}
                    - DB_ROOT_PASSWD=${SEATABLE_MYSQL_ROOT_PASSWORD:?Variable is not set or empty}
                    - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty}
                    - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-http}
                    - SEATABLE_SERVER_LETSENCRYPT=${SEATABLE_SERVER_LETSENCRYPT:-False}
                    - SEATABLE_ADMIN_EMAIL=${SEATABLE_ADMIN_EMAIL:-}
                    - SEATABLE_ADMIN_PASSWORD=${SEATABLE_ADMIN_PASSWORD:-}
                    - TIME_ZONE=${TIME_ZONE}
                  depends_on:
                    mariadb:
                      condition: service_healthy
                    memcached:
                      condition: service_started
                    redis:
                      condition: service_started
                  networks:
                    - frontend-net
                    - backend-seatable-net
                mariadb:
                  image: ${SEATABLE_DB_IMAGE:-mariadb:10.11}
                  restart: unless-stopped
                  container_name: seatable-mariadb
                  environment:
                    - MYSQL_ROOT_PASSWORD=${SEATABLE_MYSQL_ROOT_PASSWORD:?Variable is not set or empty}
                    - MYSQL_LOG_CONSOLE=true
                    - MARIADB_MYSQL_LOCALHOST_USER=1
                    - MARIADB_MYSQL_LOCALHOST_GRANTS=USAGE
                    - MARIADB_AUTO_UPGRADE=1
                  volumes:
                    - "${SEATABLE_MYSQL_VOLUMES:-/opt/seatable/mysql-data}:/var/lib/mysql"
                  networks:
                    - backend-seatable-net
                  healthcheck:
                    test: ["CMD", "mysqladmin" ,"ping", "-p${SEATABLE_MYSQL_ROOT_PASSWORD}", "-h", "localhost"]
                    interval: 5s
                    timeout: 30s
                    retries: 60
                memcached:
                  image: ${SEATABLE_MEMCACHED_IMAGE:-memcached:1.6.18}
                  restart: unless-stopped
                  container_name: seatable-memcached
                  entrypoint: memcached -m 256
                  networks:
                    - backend-seatable-net
                redis:
                  image: ${SEATABLE_REDIS_IMAGE:-redis:5.0.7}
                  restart: unless-stopped
                  container_name: seatable-redis
                  networks:
                    - backend-seatable-net
              networks:
                frontend-net:
                  name: frontend-net
                backend-seatable-net:
                  name: backend-seatable-net
              

              上述内容均无需修改,默认即可,将在本机服务器映射80端口进行访问网站,建议不要修改成其他端口,否则在后续使用过程中可能会出现seatable表格中的附件和图片无法显示的问题

              Step 2:运行docker-compose文件

              • 检查环境

                万事具备只欠东风,我们已经准备好了所有环境,现在只需要进行执行docker-compose.yml文件即可成功访问网站,在执行docker-compose.yml之前,请再三进行环境检查:

              • 确保服务器有网络链接,如果只有内网而无法访问外网,请在可访问外网的环境中,通过docker pull 命令依次拉取seatable、mariadb、redis、memcached的对应版本的镜像,再通过docker save -o命令导出镜像到本地,放到U盘中,再通过docker load

              • 确保服务器IP获取正确,并与.env文件的SEATABLE_SERVER_HOSTNAME值保持一致

              • 确保服务器的80端口无人占用

              • 确保服务器的seatbale映射目录具备可读可写的权限

              • 在docker-compose.yml同级目录下面,执行如下命令,创建并启动程序

                docker-compose up -d
                

                等待创建和启动成功

                Step 3:验证是否安装成功

                • 查看docker运行情况看服务状态
                  docker ps
                  
                  • 浏览器输入服务器IP,端口80即可访问

                    【Seatable部署安装】Docker安装Seatable 4.3保姆级教程,并且完美实现更换服务器、IP的数据迁移

                    -------王炸篇:服务器、IP更换教程,怎么进行数据迁移?-------

                    该方法,将可以直接在新服务器、新IP上使用原来数据,无论文字还是图片、文件等都能正常使用,实现100%迁移(数据文件映射目录需要和上文的安装保持一致,如果不一致,请自行从容器中取出数据文件,避免删除没了)

                    第一步,停掉正在跑的所有容器,并删除

                    docker stop seatable seatable-mariadb seatable-memcached seatable-redis

                    docker rm seatable seatable-mariadb seatable-memcached seatable-redis

                    第二步,备份seatable整个文件夹

                    cp -r /root/seatable /root/seatable_bak_20240428

                    第三步,删除seatable文件夹下的mysql-data 和 seatable-data

                    rm -rf /root/seatable/mysql-data /root/seatable/seatable-data

                    第四步,进入/root/seatable文件夹,编辑docker-compose.yml的环境变量文件.env,将SEATABLE_SERVER_HOSTNAME更改为新的IP,保存退出

                    vim /root/seatable/.env

                    第五步,在/root/seatable文件夹运行docker-compose.yml文件,创建seatable容器

                    docker-compose up -d

                    第六步,停掉刚创建的容器

                    docker stop seatable seatable-mariadb seatable-memcached seatable-redis

                    第七步,将新创建的容器的数据文件夹,用刚刚进行备份的seatable_bak_20240428的对应数据文件夹进行替换

                    替换文件夹1:mysql-data

                    -位置:/root/seatable/mysql-data/

                    -删除:rm -rf /root/seatable/mysql-data/

                    -替换:cp -r /root/seatable_bak_20240428/mysql-data/ /root/seatable/

                    替换文件夹2:seafile-data

                    -位置:/root/seatable/seatable-data/seatable/seafile-data/

                    -删除:rm -rf /root/seatable/seatable-data/seatable/seafile-data/

                    -替换:cp -r /root/seatable_bak_20240428/seatable-data/seatable/seafile-data/ /root/seatable/seatable-data/seatable/

                    替换文件夹3:seahub-data

                    -位置:/root/seatable/seatable-data/seatable/seahub-data/

                    -删除:rm -rf /root/seatable/seatable-data/seatable/seahub-data/

                    -替换:cp -r /root/seatable_bak_20240428/seatable-data/seatable/seahub-data/ /root/seatable/seatable-data/seatable/

                    替换文件夹4:storage-data

                    -位置:/root/seatable/seatable-data/seatable/storage-data/

                    -删除:rm -rf /root/seatable/seatable-data/seatable/storage-data/

                    -替换:cp -r /root/seatable_bak_20240428/seatable-data/seatable/storage-data/ /root/seatable/seatable-data/seatable/

                    第八步,启动seatable服务

                    docker start seatable seatable-mariadb seatable-memcached seatable-redis

                    第九步,域名转换表格中的文件、图片等链接IP,如果不转换则无法在Base表格中查看、下载图片文件等,此步骤非常重要

                    • 进入seatable容器:docker exec -it seatable /bin/bash
                    • 找到dtable-web文件夹:find / -name dtable-web

                      结果为:/opt/seatable/seatable-server-4.3.0/dtable-web

                    • 进入上述搜索到的对应文件夹:cd /opt/seatable/seatable-server-4.3.0/dtable-web
                    • 通过命令执行域名转换(-od参数为老IP,-nd参数为新IP,需要替换成你们自己的新老IP,不要看都不看直接贴命令):seatable.sh python-env manage.py domain_transfer -all -od http://xxx.xxx.xxx.xxx -nd http://xxx.xxx.xxx.xxx
                    • 退出容器:exit

                      第九步,浏览器登录网站,验证是否迁移成功!

                      100%是成功的,如果没有成功请回头看哪一步骤没有正确进行

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]