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

