迁移文章参考: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: