Strapi を開発環境と本番環境のDockerで動かしたい【その9】- Strapi のアップデート

今回は開発環境と本番環境の Strapi のバージョンアップデートを行います。

前回まではコチラ👇

  1. 【その1】
  2. 【その2】
  3. 【その3】
  4. 【その4】
  5. 【その5】- 独自ドメインの設定
  6. 【その6】- プラグインの追加
  7. 【その7】- APIとして公開する
  8. 【その8】- Swagger の導入

Strapi のバージョンの確認

Strapi の新しいバージョンがあるかどうかは管理画面から確認することができます。

開発環境で確認してみます。

# 作業ディレクトリに移動する
$ cd ~/StrapiProjects/donuts-strapi

# イメージの作成
$ docker compose -f docker-compose.dev.yml build

# コンテナの起動
$ docker compose -f docker-compose.dev.yml up

http://localhost:1337/admin/settings/application-infos を開きます。
メニューのSettings1のバッジがついている場合に新しいバージョンにあげることができます。

現在のバージョンを確認するとv4.3.8であることがわかります。
Upgrade your admin panelを選択すると最新のリリースをみることができます。

リリース情報に、Update and Migration Guidesがあるので、そちらを参考にアップデートしてきます。

バージョンをアップデートする

公式のドキュメントを参考にバージョンをアップデートします。

STEP.1
現在のバージョンを確認する

先ほど確認した手順で、現在のバージョンを確認します。
現在のバージョンはv4.3.8です。

STEP.2
アップデートしたいバージョンを確認する

次にアップデート後のバージョンを確認します。最新リリースがv4.4.3なのでそちらにアップデートしていきます。

strapi/releases/tag/v4.4.3

STEP.3
稼働中の開発環境をストップする

ファイルを編集するので、開発環境が稼働中であれば止めておきます。

# 作業ディレクトリに移動する
$ cd ~/StrapiProjects/donuts-strapi

# コンテナを止める
$ docker compose -f docker-compose.dev.yml down

# 使用していない Docker オブジェクトを削除する
$ docker system prune -f
STEP.3
package.json を編集する

package.jsonの Strapi バージョンを変更します。

# 作業ディレクトリに移動する
$ cd ~/StrapiProjects/donuts-strapi

# この中にある package.json を編集
$ ls

README.md              docker-compose.dev.yml src
config                 favicon.ico            stg.Dockerfile
data                   node_modules           tsconfig.json
database               package.json           yarn.lock
dev.Dockerfile         prod.Dockerfile
dist                   public
package.json
{
  "name": "donuts-strapi",
  "private": true,
  "version": "0.1.0",
  "description": "A Strapi application",
  "scripts": {
    "develop": "strapi develop",
    "start": "strapi start",
    "build": "strapi build",
    "strapi": "strapi"
  },
  "devDependencies": {},
  "dependencies": {
    "@strapi/plugin-documentation": "^4.4.1", # ここを書き換える
    "@strapi/plugin-i18n": "4.3.8",  # ここを書き換える
    "@strapi/plugin-users-permissions": "4.3.8", # ここを書き換える
    "@strapi/strapi": "4.3.8", # ここを書き換える
    "@webbio/strapi-plugin-scheduler": "^0.1.2",
    "pg": "^8.8.0"
  },
  "author": {
    "name": "A Strapi developer"
  },
  "strapi": {
    "uuid": "d0fbc2ca-91a3-46ff-87aa-7554b89a9db7"
  },
  "engines": {
    "node": ">=14.19.1 <=16.x.x",
    "npm": ">=6.0.0"
  },
  "license": "MIT"
}

"@strapi/strapi": "4.3.8""@strapi/strapi": "4.4.3"に書き換えます。

また、以下のメモの通り、"@strapi/plugin-documentation""@strapi/plugin-i18n": "4.3.8""@strapi/plugin-users-permissions"も変更します。

@strapi のものを全てアップデートする

"@strapi/strapi": "4.3.8""@strapi/strapi": "4.4.3"に書き換えただけでは以降のSTEP.5でエラーが出てしまいました。

...
donuts-strapi           | [2022-10-08 16:44:02.550] debug: ⛔️ Server wasn't able to start properly.
donuts-strapi           | [2022-10-08 16:44:02.553] error: Cannot read properties of undefined (reading 'register')
donuts-strapi           | TypeError: Cannot read properties of undefined (reading 'register')
donuts-strapi           |     at Object.registerI18nPermissionsHandlers (/opt/node_modules/@strapi/plugin-i18n/server/services/permissions/engine.js:57:39)
...

@strapi関係のライブラリも同時にアップデートする必要があるようです。

各ライブラリの最新バージョンは npm で確認できます。

@strapi/plugin-documentation
@strapi/plugin-i18n
@strapi/plugin-users-permissions

変更後は以下の通りです。

package.json

STEP.4
開発環境を起動して確認する

再度開発環境のコンテナを起動します。

# 作業ディレクトリに移動する
$ cd ~/StrapiProjects/donuts-strapi

# イメージの作成
$ docker compose -f docker-compose.dev.yml build

# コンテナの起動
$ docker compose -f docker-compose.dev.yml up

http://localhost:1337/admin/settings/application-infos にアクセスして確認してみます。
v4.4.3と表示され、Upgrade your admin panelの文字が消えていることが確認できました。

STEP.5
本番環境にデプロイする

最後にVPSにデプロイします。

Strapi を開発環境と本番環境のDockerで動かしたい【その4】の記事にてワークフローを設定しているので、GitHub にプッシュするだけでデプロイができます。

今回はステージング環境にデプロイします。

# 作業ディレクトリに移動する
$ cd ~/StrapiProjects/donuts-strapi

# package.json をコミットする
$ git add package.json
$ git commit -m "Update strapi version to 4.4.3"

# staging ブランチにプッシュする
$ git push origin staging

これでワークフローが完了するのを待ちます。

VPS環境でv4.4.3表記になっていることが確認できればStrapi バージョンのアップデート完了です。

おわりに

今回で「Strapi を開発環境と本番環境のDockerで動かしたい」のシリーズは終わりにしようと思います。

今回のシリーズを通して、VPS + Strapi 環境をいつでも用意できるようになりました。

今後のシリーズはしばらくお休み予定ですが、以前の Next.js と組み合わせて Strapi を利用する方法についてもいずれ書きたいと思っています。