👓

【docker】OSSのヘッドレスCMSのstrapiをmongoDBとともにローカル起動する

2024/01/30に公開

strapiとは

OSSのヘッドレスCMSです。
コンテンツをAPI化してバックエンドを担います。
https://strapi.io/

構築設定

dockerイメージは公式から正式に推奨されていませんが、
今回はローカルで起動させたいのでdockerで実施します。
dbはドキュメント指向データベースのmongoDBを利用します。
MySQLやpostgleSQLでもdockerで構築できるようですが、
公式のgithub掲載手順でやってもyarnの依存関係エラーが出るので一旦あきらめました。

<公式のサポートdoc>
https://docs.strapi.io/dev-docs/installation/docker

.env

docker-composeファイルから読むenvファイルです。

DATABASE_CLIENT=mongo
DATABASE_NAME=strapi
DATABASE_HOST=mongoexample
DATABASE_PORT=27017
DATABASE_USERNAME=strapi
DATABASE_PASSWORD=password
MONGO_INITDB_ROOT_USERNAME=strapi
MONGO_INITDB_ROOT_PASSWORD=password

docker-compose.yaml

version: "3"

services:
  strapiexample:
    image: strapi/strapi
    container_name: strapiexample
    restart: unless-stopped
    env_file: .env
    environment:
      DATABASE_CLIENT: ${DATABASE_CLIENT}
      DATABASE_NAME: ${DATABASE_NAME}
      DATABASE_HOST: ${DATABASE_HOST}
      DATABASE_PORT: ${DATABASE_PORT}
      DATABASE_USERNAME: ${DATABASE_USERNAME}
      DATABASE_PASSWORD: ${DATABASE_PASSWORD}
    networks:
      - strapi-app-network
    volumes:
      - ./app:/srv/app
    ports:
      - "1337:1337"

  mongoexample:
    image: mongo
    container_name: mongoexample
    restart: unless-stopped
    env_file: .env
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
    networks:
      - strapi-app-network
    volumes:
      - strapidata:/data/db
    ports:
      - "27017:27017"

networks:
  strapi-app-network:
    driver: bridge

volumes:
  strapidata:

起動

起動します。

$ docker compose up

こんな感じのメッセージが出力すればOKです。

strapi  | To access the server, go to:
strapi  | http://localhost:1337

アクセス

http://localhost:1337/admin にアクセスします。
初回アクセス時はアカウントの作成が求められます。

操作画面

アカウントを作成すると以下のようなGUIに遷移するので、
APIを作成してみたりコールしてみてください。

https://docs.strapi.io/user-docs/intro

注意点

APIを作成しても権限付与をしないと404エラーになります。
「設定」→「ロールと権限」→PublicからfindとfidoneをONにしましょう。
設定はAPI毎に分かれています。

Discussion