Docker + バックエンド の環境構築を試したものです。 構成は
コンテナ | 用途 | 備考 |
---|---|---|
Express( Node.js ) | バックエンド | Express - Node.js Web アプリケーション・フレームワーク |
Nginx | リバースプロキシ | NGINX(エンジンエックス)|日本公式サイト |
PostgreSQL | DB | 日本PostgreSQLユーザ会 |
これらを Docker 上に構築してバックエンドの環境を Docker Compose を使ってひとまとめにしよう、というのが主旨です。
今後知見が増えたりアイディアが出たら更新することもあります。
以下の環境で実行・確認しています。
環境 | バージョン | 備考 |
---|---|---|
macOS Catalina | v10.15.7 | |
Docker Desktop for Mac | v3.0.3 | |
Docker | v20.10.0, build 7287ab3 | $ docker --version |
Docker Compose | v1.27.4, build 40524192 | $ docker-compose --version |
Docker Node.js | v12.18.3 | Dockerfile で指定 |
[Docker nginx](https://hub.docker.com/_/nginx | v1.15 | Dockerfile で指定 |
Docker PostgreSQL | v13.1 | Dockerfile で指定 |
Postman | v7.36.0 | API の疎通確認で使用 |
./
├── LICENSE
├── README.md
├── backend/
│ ├── Dockerfile
│ └── express-app/
│ ├── LICENSE
│ ├── README.md
│ ├── app/
│ │ ├── api-factory.js
│ │ ├── company-api.js
│ │ ├── db/
│ │ │ ├── db-client.js
│ │ │ └── db-config.js
│ │ ├── message-api.js
│ │ └── model/
│ │ └── employee.js
│ ├── app.js
│ ├── bin/
│ │ └── www*
│ ├── package-lock.json
│ ├── package.json
│ ├── postman/
│ │ └── communication-check.postman_collection.json
│ ├── routes/
│ │ └── index.js
│ └── sql/
│ └── initial-db.sql
├── docker-compose.yml
├── postman/
│ └── communication-check.postman_collection.json
├── reverse-proxy/
│ └── nginx/
│ ├── Dockerfile
│ └── nginx.conf
└── storage/
└── db/
├── LICENSE
├── README.md
├── docker-compose.yml
└── postgresql/
├── Dockerfile
└── init/
└── initialize.sql
構成変更等でブランチを切って修正することはありますが、それらは一時的なものになります。
基本 main
ブランチのみを残し、学習用のブランチが残ることはありません。
Express, PostgreSQL のコンテナについては、次のリポジトリを git submodule
で登録しています。
次のコマンドを実行し、予め各リポジトリを取得してきてください。
$ git submodule update -i
次のコマンドを実行し、submodule
であるリポジトリの更新を行ってください。
$ git submodule update --remote
# backend の更新
$ cd backend/express-app
$ git checkout develop
$ git pull
# DB の更新
$ cd ../../storage/db
$ git checkout develop
$ git pull
このプロジェクトでは下記に配置されている docker-compose.yml
は使用しません。
./
└── storage/
└── db/
├── docker-compose.yml # ⇐ この docker-compose.yml は使用しない
リポジトリのルート直下にある docker-compose.yml
だけを使用します。
./
├── docker-compose.yml # ⇐ この docker-compose.yml だけを使用する
次のコマンドを実行することで Docker 上に Nginx, Express, PostgreSQL が起動します。
$ docker-compose up -d --build
-d
はバックグラウンドで動かすオプションです。 フォアグラウンドで動かしたい場合は -d
をつけずに実行してください。
サービスは停止するが Docker コンテナは削除したくない場合は下記コマンドを実行してください。
$ docker-compose stop
サービスの停止とサービスを提供するコンテナの削除、それからネットワークも削除したい場合は下記コマンドを実行してください。
$ docker-compose down
express-work の README を参照ください。
本プロジェクトのリポジトリで起動した場合、各 API におけるポート番号の指定は不要です。
( リーバスプロキシの設定 を行うことで、ポートを 80
にフォワーディングしています )
postgresql-in-docker の README を参照ください。
疎通確認のためのデータを用意しております。 確認の際は Postman のデータ をお試しください。