资源共享,记录个人心得等

docker迁移Chevereto

迁移文章参考:https://www.ioiox.com/archives/80.html#comment-4492

需要注意的是新版的Chevereto在docker环境变量中的数据库表前缀从“CHEVERETO_DB_PREFIX”修改成为了“CHEVERETO_DB_TABLE_PREFIX”使用之前字段的话表前缀不生效,迁移后会重新安装重新生成数据库表。

我遇到的问题

docker挂载

除了上面的环境变量外,docker挂载上是我自己给自己挖的坑,旧docker中挂载的是数据卷,在docker compose中是“database:/var/lib/mysql:rw”在最后生成database数据卷。新机器的挂载不打算用这种方式了。就数据卷直接复制出来即可。位置在/var/lib/docker/volumes/里面能够找到对应名字的数据卷,如果没起名字的话需要通过docker inspect 容器 查看一下,或者docker inspect volumes 卷名确定。

数据库

数据库我一上来就将所有的文件即旧容器内/var/lib/mysql/ 中的所有文件都复制到了新挂载路径中,并且原镜像是mariadb10.5.6,新的拉的lastest,估计是10.10或者10.11了。直接无法启动。反复将容器删除调整挂载路径中的内容,只保留了chevereto图床的数据库文件夹也不行。能启动,但是库内的表无法打开,将旧容器数据库用mysqldump备份,到新机器中手动新建数据库并恢复,失败,没有一张表被创建。

最后的解决方法是只将图床数据库文件夹复制到新挂载点中,镜像手动拉取10.5.18,对应我就容器大版本的最新更新,能够正常启动,图床也能直接打开,获取之前内容,随后反复删除数据库容器并手动拉取指定标签的较新的数据库镜像,即10.5到10.6到10.7..最后到10.9都没有问题,就不在用再新的数据库了。

即:docker-compose.yml

version: '3'

services:
  db:
    image: mariadb:10.5.18
    volumes:
      - ./database:/var/lib/mysql:rw
    restart: always
    networks:
      - private
    environment:
      MYSQL_ROOT_PASSWORD: xxxxx
      MYSQL_DATABASE: xxxxx
      MYSQL_USER: xxxxx
      MYSQL_PASSWORD: xxxxx

  chevereto:
    depends_on:
      - db
    image: nmtan/chevereto
    restart: always
    networks:
      - private
    environment:
      CHEVERETO_DB_HOST: db
      CHEVERETO_DB_USERNAME: xxxxxx
      CHEVERETO_DB_PASSWORD: xxxxx
      CHEVERETO_DB_NAME: xxxxx
      CHEVERETO_DB_TABLE_PREFIX: chv_
    volumes:
      - ./images:/var/www/html/images:rw
      - ./php.ini:/usr/local/etc/php/php.ini:ro
    ports:
      - 8080:80

networks:
  private:
赞(0)
转载需标明出处Lee's Blog » docker迁移Chevereto

评论 抢沙发

登录

找回密码

注册