TR;DR
下記の構成で、dockerでGrowiが稼働しているものとする
App | Version |
---|---|
Growi | 4.2.21 |
mongodb | 3.6 |
Growi 4.3から、大幅な変更があるので、4.2以前から4.3へアップグレードする際は、公式の記事に目を通しておきましょう
また、作業前に、必ずバックアップを取っておきましょう!
mongodbをアップデート
Growi 4.2.xまでは、mongodb 3.xでも動作可能でしたが4.3ではmongodb 4.4が要求されるので、mongodbのアップデートを行う必要があります
mongodbを3.6->4.0->4.2->4.4の順でアップデートする作業を行う
$ docker-compose stop
docker-compose.yml内の下記mongoバージョン指定を修正(3.6⇢4.0)
mongo:
image: mongo:4.0
$ docker-compose up -d
$ docker exec -it growi_mongo_1 /bin/bash
# mongo
>db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
#exit
$ exit
この操作をmongoのバージョン箇所を変更して繰り返す。 (コンテナ名:growi_mongo_1は個人環境により違うので、適宜調べて変更の事)
なお、バージョンアップ後、動作確認の上、不必要な旧mongodbのimageを削除しておく
Dockerfile修正
現状のDockerfileをバックアップ取って、公式のGithubのDockerfileと入れ替える
Dockerfileやdocker-compose.ymlを大幅に変更していなければ、git pullやgit cloneでも構わない
4.3.xへアップグレード
docker-compose stop
でGrowiを停止後、
mongodbが4.4であり、Dockerfileが最新であることを確認し、growi関連のイメージファイルを全削除(weseek/growi:4だけで良いかも)
$ docker rmi weseek/growi:4
再構築し、起動
$ docker-compose up -d --build
...
Recreating growi_elasticsearch_1 ... error
Starting growi_mariadb_1 ... done
Starting growi_mongo_1 ... done
2b1e0073aa599ce405cb150a843cd26a50d7a428be4314c1
Recreating growi_hackmd_1 ... error
ERROR: for growi_hackmd_1 no such image: sha256:9e2f64420f8260b1f3ebb61883e990838e95758c1e09ac0682ab0f8a4359ffe6: No such image: sha256:9e2f64420f8260b1f3ebb61883e990838e95758c1e09ac0682ab0f8a4359ffe6
ERROR: for elasticsearch no such image: sha256:e6e709e609d8bc902b1e0073aa599ce405cb150a843cd26a50d7a428be4314c1: No such image: sha256:e6e709e609d8bc902b1e0073aa599ce405cb150a843cd26a50d7a428be4314c1
ERROR: for hackmd no such image: sha256:9e2f64420f8260b1f3ebb61883e990838e95758c1e09ac0682ab0f8a4359ffe6: No such image: sha256:9e2f64420f8260b1f3ebb61883e990838e95758c1e09ac0682ab0f8a4359ffe6
ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.
Continue with the new image? [yN]y
...
Successfully tagged growi_app:latest
growi_mariadb_1 is up-to-date
growi_mongo_1 is up-to-date
Recreating c591aa1f77f1_growi_elasticsearch_1 ... done
Recreating c2df05b864c2_growi_hackmd_1 ... done
Recreating growi_app_1 ... done
イメージを全削除した影響か、hackmdやelasticsearchが再構築されたが無事起動できた