10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker composeでstrapi+PostgreSQL開発環境を作る

Last updated at Posted at 2019-12-15

理想の形になっていないのでそのうちブラッシュアップする…

フォルダ・ファイル構成

.
├── app //空フォルダ
├── db
│   └── pgsql-data //空フォルダ
└── docker-compose.yml

docker-compose.ymlを用意

2019年12月時点では下記が入ります。
Node.js : v13.2.0
PostgreSQL : psql (PostgreSQL) 10.11

docker-compose.yml
version: '3'
services:
  postgres:
    image: postgres:10-alpine
    container_name: "test-postgres-db"
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - ./db/pgsql-data:/var/lib/postgresql/data
  app:
    image: node:13.2.0
    ports:
      - "8080:8080"
      - "21337:1337"
    volumes:
      - ./app:/src
    working_dir: /src
    tty: true
    depends_on: 
      - postgres

起動

docker-compose.ymlのあるディレクトリで。

$ docker-compose up -d

コンテナに入る

docker-compose.ymlのあるディレクトリで。

$  docker-compose exec app /bin/bash

strapiをインストール

appコンテナに入り、strapiをインストールしたいディレクトリで。
※このdocker-composeではworking_dirとしてホストの./appをマウントしている/srcを指定しているので、入ったそのまま/srcが楽だと思います。

npx create-strapi-app test-app

strapi設定

dockerコンテナの設定に合わせる。Hostをdocker-compose.yml内のサービスの名前に合わせると接続できる。

? Choose your installation type Custom (manual settings)
? Choose your default database client postgres
? Database name: postgres
? Host: postgres
? Port: 5432
? Username: postgres
? Password: ******
? Enable SSL connection: No

ログ

Creating a project with custom database options.
Creating files.
Dependencies installed successfully.

Your application was created at /src/test-app.

Available commands in your project:

  yarn develop
  Start Strapi in watch mode.

  yarn start
  Start Strapi without watch mode.

  yarn build
  Build Strapi admin panel.

  yarn strapi
  Display all available commands.

You can start by doing:

  cd /src/test-app
  yarn develop

DB接続周りでエラーが出ている場合は、postgresのコンテナがうまく起動していないなどをうたがう・

strapiを起動

cd test-app
yarn develop

ログ

$ strapi develop
Building your admin UI with development configuration ...

✔ Webpack
  Compiled successfully in 42.05s

[2019-12-13T11:59:45.458Z] info File created: /src/test-app/extensions/users-permissions/config/jwt.json

 Project information                                                          

┌────────────────────┬──────────────────────────────────────────────────┐
│ Time               │ Fri Dec 13 2019 11:59:45 GMT+0000 (Coordinated … │
│ Launched in        │ 12783 ms                                         │
│ Environment        │ development                                      │
│ Process PID        │ 8151                                             │
│ Version            │ 3.0.0-beta.17.8 (node v13.2.0)                   │
└────────────────────┴──────────────────────────────────────────────────┘

 Actions available                                                            

One more thing...
Create your first administrator 💻 by going to the administration panel at:

┌─────────────────────────────┐
│ http://localhost:1337/admin │
└─────────────────────────────┘

[2019-12-13T11:59:46.015Z] debug HEAD index.html (90 ms) 200
[2019-12-13T11:59:45.999Z] info ⏳ Opening the admin panel...

docker-compose.ymlで21337へのアクセスを1337につながるようにしてあるので、このコンテナのhttp://localhost:1337/adminにホスト(Mac)側からアクセスするには、http://localhost:21337/adminでアクセス出来るようになっている。

docker-compose.ymlに変更を加える

次回以降docker-compose up -dでstrapiの起動まで行えるようにdocker-compose.ymlを変更しておく。
TODO: 変更したくないし、Dockerfileも書きたくないので、になんとかできないか模索する

docker-compose.yml
version: '3'
services:
  postgres:
    image: postgres:10-alpine
    container_name: "test-postgres-db"
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - ./db/pgsql-data:/var/lib/postgresql/data
  app:
    image: node:13.2.0
    ports:
      - "8080:8080"
      - "21337:1337"
    volumes:
      - ./app:/src
    working_dir: /src/test-app #strapiに合わせて変更
    tty: true
    depends_on: 
      - postgres
    command: yarn develop # develop起動用にコマンドを指定

ストップする

docker-compose.ymlのあるディレクトリで。

docker-compose stop

(おまけ)ホストからDBにアクセス

基本的にデフォルトです。パスワードはdocker-compose.ymlPOSTGRES_PASSWORD に入力したものが使われます。
コンテナ間の通信とはホスト設定が違います。

項目
Host 127.0.0.1
Port 5432
User postgres
Password secret
Database postgres

(おまけ)APP(GUI)を活用する

Docker composeはKitematicを、ホストからのDB接続はTablePlus(or 他のGUIクライアント)の利用を推奨。
Kitematicを使えば、上記の[コンテナに入る]はボタンクリックで出来るようになり、コマンドやサービス名を覚えていなくてもいいですし、DBはちまちまコマンド叩くよりGUIで情報量を増やすほうが作業効率がいいと思います。

まとめ

これはstrapiのサンプルですが、もちろんNode.js製のフレームワークであればなんでも応用可能です。
なにかやってみたいと思ったタイミングで、プロジェクトのディレクトリを作る→このdocker-compose.ymlを置いて微調整(nodeのバージョンなど)、いらなくなったら即捨てる、でいかがでしょうか。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?