Strapi(v4) + MySQLをdocker-compose化する
#57
2024-06-14

Strapi(v4) + MySQLをdocker-compose化する

Strapi(v4) + MySQLをdocker-compose化する
2024-06-14

Strapi(v4) + MySQLをdocker-compose化する

#57
この記事は最終更新から1年以上経過しているため、内容が古くなっている可能性があります。

Strapiはv3まで公式Dockerイメージが提供されていて、それを使えばある程度簡単にdocker-compose化できると思うのですが、最新のv4では公式Dockerイメージが提供されていません。 とはいえ、Dockerを使ってMySQLのコンテナと一緒に管理できると何かと便利なのでStrapiもDockerコンテナ化しようと思ったのですが、いくつかハマりポイントがあったのでその解説をしつつ、備忘録的にStrapi(v4)とMySQLをdocker-composeで一元管理する方法を綴っていきます。

Strapi(v4)の有志によるDockerイメージは既に存在するが…

naskio/docker-strapiというStrapi(v4)用のDockerイメージが存在するのですが、ビルドの段階でCannot find module 'react'というエラーが表示される問題に悩まされていました。 (Issue)

そこで、この問題を解決したV-Shadbolt/docker-strapiというDockerイメージが派生して出来たようなのですが、こちらを使ってみてもエラー(内容は忘れた)が出てDockerコンテナが立ち上がりませんでした。

ということで、セルフでStrapiをDocker化してみようと思い立ったわけです。

新規Strapiプロジェクトを作成する

まずはnpx create-strapi-app@latest strapiで新規にStrapiのプロジェクトを作成します。プロジェクト名はstrapiとしておきます。

Quickstartは使わずにCustomを選択、データーベースにMySQLを選択しセットアップを進めます。ちなみに途中でMySQLの接続情報の入力を求められますが、Dockerで上書きするので適当な値を入力しておけば大丈夫です。

.envファイルを引っ張ってきて編集する

上記の手順により自動作成されたstrapiディレクトリーにある.envファイルを1つ上の階層に移動させます。(この後docker-compose.ymlが来るのと同じ階層)

おそらく今.envファイルはこのようなランダムな文字列と先程のCLIで入力したMySQLの接続情報が入力されている状態になっていると思いますが、このうちDATABASE_HOSTmysqlに変更します。

これは何かというとMySQLのDockerコンテナの名前になります。(今回はdocker-compose.yml内でMySQLのコンテナ名をmysqlと定義するため)

あとはお好みでDB名やユーザー名、パスワードなどを変更してください🔐

必要なファイルを作成する

移動後の.envファイルと同じ階層にDockerfiledocker-compose.yml.dockerignoreを置きます。 中身は以下のものをコピーしてください。

Dockerfile

ちなみに7行目が結構ミソで、VPSのUbuntuでDockerを使わずにStrapiプロジェクトを新規作成しようとした時にぶち当たった問題から得たナレッジを反映しています。

手元のMacだと普通に新規作成できるのですが、Dockerイメージをビルドする時node_modulesを削除しないとやっぱりエラーで立ち上がらなかったのでどうやらLinuxだとこの処置をする必要がありそう…?

docker-compose.yml

.dockerignore

これは公式の丸コピです。

docker-composeでコンテナを立ち上げる

準備はできたのでコンテナを立ち上げてみましょう!

問題なく起動するかログを確認したいのであえて-dオプションを抜いてコンテナを立ち上げてみます。

よさそう

http://localhost:1337/adminにアクセスしてアカウント登録画面が表示されれば成功です!

今現在このブログをリニューアルするための開発をしているのですが、この「StrapiをDockerを用いて運用する」というところで結構ハマったので忘れないうちにと思って急いで記事に起こしましたw

おそらく年内にはリニューアル完了していると思うのでお楽しみに!

この記事は 2025/07/06 01:44:03 にビルドされました

同じようなタグが設定されている記事
読んでみる
読んでみる
読んでみる
読んでみる