Skip to content

ksh-fthr/backend-in-docker

Repository files navigation

このプロジェクトについて

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 について

このプロジェクトでは下記に配置されている 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

API の内容

express-work の README を参照ください。

補足

本プロジェクトのリポジトリで起動した場合、各 API におけるポート番号の指定は不要です。 ( リーバスプロキシの設定 を行うことで、ポートを 80 にフォワーディングしています )

DB の内容

postgresql-in-docker の README を参照ください。

動作確認

疎通確認のためのデータを用意しております。 確認の際は Postman のデータ をお試しください。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published