
Strapiをとりあえず動かしてみる
2021年07月22日
このブログはJamstackで構築されており、JamstackでWebサイトを組むにあたって重要なのがヘッドレスCMSです。そのヘッドレスCMSのひとつであるStrapiを試してみます。
ヘッドレスCMSでよく使われているのはContentfulやmicroCMSだと思うのですが、それらのサービスはCMS自体がプラットフォームとして提供されています。これでもCMS側がマネージドになるので非常に管理が楽だったりするので利点は多いのですが、さまざまな理由でCMSも自分でコントロールしたいという場合もあると思います。
CMSをセルフホストする際の有力な候補がWordPressなのですが、ご存知の通りWordPressは脆弱性の塊であり設置にはいろいろと気を遣います。記事を書く側がWordPressしか使えない、今まで運用していたWordPressをJamstackに置き換えたい、という場合にのみ採用するべきです。
今回はNode.js製のモダンなセルフホストができるCMSのStrapiを試しに動かしてみることにします。Gatsbyへの統合などはせずにDockerで動かす所まで。
Docker?
唐突にDockerというワードが出てきましたね。Dockerについては詳細な解説が多数ありますので簡単な説明に留めますが、コンテナ型の仮想環境です。Node.jsを使っているアプリケーションですから環境構築にそこそこ労力がいるのと、データベースも必要なのでDockerとdocker-composeで環境を開発マシンとは分けて・ついでにDBとまとめて動かしてしまったほうが楽ということです。
Docker Desktop for Mac and Windows | Docker
Docker Desktopをインストールしておきましょう。Windowsの場合はWSL2のセットアップも必要です。Linuxの場合Docker Desktopではなく各ディストロが用意しているDockerのパッケージをインストールすることになると思います。
動かしてみる
それでは動かしてみましょう。Windowsの場合これから説明するコマンドはすべてWSL2上のUbuntuで実行してください。
まず適当なディレクトリを作ります。
mkdir ~/strapi
cd ~/strapi
こんな内容のdocker-compose.yml
を作ります。公式ドキュメントのものとほとんど違いはありませんがalpineベースのイメージを使っているので、ビルドは多少速くなるはずです。
version: '3'
services:
strapi:
image: strapi/strapi:alpine
environment:
DATABASE_CLIENT: postgres
DATABASE_NAME: strapi
DATABASE_HOST: postgres
DATABASE_PORT: 5432
DATABASE_USERNAME: strapi
DATABASE_PASSWORD: strapi
volumes:
- ./app:/srv/app
ports:
- '1337:1337'
depends_on:
- postgres
postgres:
image: postgres:alpine
environment:
POSTGRES_DB: strapi
POSTGRES_USER: strapi
POSTGRES_PASSWORD: strapi
volumes:
- ./data:/var/lib/postgresql/data
docker-composeを使うことでコマンドひとつでPostgreSQLとStrapiを同時に立ち上げたり終了したりすることができたり、Dockerでは問題になりがちなデータベースの永続化ができていたりと色々楽になります。DBのパスワードが非常に単純なので実運用ならもう少し複雑なものにしておいたほうがよさそうです。
設定ファイルができたら動かしてみましょう。
docker-compose up
マシンの性能にもよりますが、比較的新しいデスクトップPCでも立ち上げまでざっくり5分ぐらいかかります。ターミナルがこのような画面になればOKです。
ブラウザからlocalhost:1337
にアクセスしてみましょう。
そのうちコンテンツタイプを整備し、APIを生やしてGatsbyからアクセスしてみます。そのうち……