如何在Docker镜像上运行自动升级的ArangoDB 3.1到3.2
当试图升级一个docker容器与ArangoDB 3.1到3.2我遇到了问题与数据库需要升级:
FATAL Database '_system' needs upgrade. Please start the server with the --database.auto-upgrade option FATAL Database '_system' upgrade failed. Please inspect the logs from the upgrade procedure
我如何真正通过设置? 我试着设置command: 'arangod --database.auto-upgrade true
在我docker-compose.yml
,但是什么都不做。
我也使用docker-compose作为我的系统,其中arangodb在服务名称database
下运行,如下所示:
version: '2.1' services: database: image: arangodb:3.1.3 ports: - 8529:8529 volumes: - /opt/my-system/Database/arangodb:/var/lib/arangodb3 - /opt/my-system/Database/arangodb-apps:/var/lib/arangodb3-apps restart: always healthcheck: test: curl -f my-system:8529/_api/version || exit 1 . . . other services
升级之前,我也必须停止我的系统。 我刚刚通过以下步骤升级了我的arangodb容器(3.1.3 => 3.2.5)
-
docker pull arangodb:3.2.5
=>获取你要升级的镜像 -
docker-compose stop
=>停止使用数据库的系统 - 备份数据库卷(我只是复制/ opt / my-system / Database文件夹)
-
docker-compose rm -f database
=>删除运行旧arangodb的容器 - 更新docker-compose.yml文件与新的arangodb图像=>所以
image:arangodb:3.1.3
成为image:arangodb:3.2.5
-
docker-compose run --rm database arangod --database.auto-upgrade
=>这将创build运行v3.2.5的数据库容器,升级数据库文件,然后在完成时移除容器。 -
docker-compose up -d database
=>启动升级后的数据库,看看是否一切正常 -
docker-compose start
=>启动系统的其余部分,该系统现在使用已升级的数据库
如果我在升级过程中遇到错误,我可以轻松地回滚到v3.1.3,因为我总是保留prev映像和数据库文件。 希望这可以帮助!