如何在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)

  1. docker pull arangodb:3.2.5 =>获取你要升级的镜像
  2. docker-compose stop =>停止使用数据库的系统
  3. 备份数据库卷(我只是复制/ opt / my-system / Database文件夹)
  4. docker-compose rm -f database =>删除运行旧arangodb的容器
  5. 更新docker-compose.yml文件与新的arangodb图像=>所以image:arangodb:3.1.3成为image:arangodb:3.2.5
  6. docker-compose run --rm database arangod --database.auto-upgrade =>这将创build运行v3.2.5的数据库容器,升级数据库文件,然后在完成时移除容器。
  7. docker-compose up -d database =>启动升级后的数据库,看看是否一切正常
  8. docker-compose start =>启动系统的其余部分,该系统现在使用已升级的数据库

如果我在升级过程中遇到错误,我可以轻松地回滚到v3.1.3,因为我总是保留prev映像和数据库文件。 希望这可以帮助!