sample

このリポジトリで紹介したいもの(ざっくり)

  • ライブラリ/ツールの入れ替えを容易にしたい
  • クリーンな環境かつ、開発環境に依存しない構成 ->どのOSでも同じ挙動になる、そのままデプロイできる
  • モダン

Usage

$ docker-compose up -d 
$ docker-compose ps
  Name               Command             State            Ports         
------------------------------------------------------------------------
backend    node                          Up      0.0.0.0:18081->3000/tcp
frontend   node                          Up      0.0.0.0:18080->3000/tcp
mysql      docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp 

architecture

├── backend
│   ├── Dockerfile          # backendのコンテナ用のDockerファイル
│   ├── api                 # ここの配下がkoajsコンテナに渡される
│   │   ├── dist            # typescriptの宛先 この配下は勝手につくられるので触らない
│   │   │   ├── app
│   │   │   ├── controllers
│   │   │   ├── lib
│   │   │   ├── routes
│   │   │   └── user
│   │   ├── node_modules  # 開発時はホストOSのnode_modulesをコンテナに渡す
│   │   ├── package.json
│   │   ├── src            # backendのソースファイル
│   │   │   ├── app
│   │   │   ├── controllers
│   │   │   ├── lib        # ライブラリ群
│   │   │   ├── routes
│   │   │   └── user       # ユーザにまつわるソース
│   │   ├── test
│   │   │   ├── example.js # testのサンプル
│   │   │   └── http       # 機能単位でディレクトリ分ける 
│   │   ├── tsconfig.json  # typescriptの設定ファイル
│   │   └── yarn.lock
│   └── sql                # sqlの初期データ投入ファイル群(migration的な)
│       ├── init.sh        # sql/配下のディレクトリはsqlコンテナでしか利用しない
│       └── seed.sql
├── docker-compose.yml
└── frontend               # frontendのコンテナ用(まだ未着手;;)
    ├── Dockerfile
    └── packege.json

Remarks

  • yarn addはコンテナの中で実施する。
  • yarn test --watch テストが便利

この構成で考えられていないもの

  • frontendのアーキテクチャ
  • DB設計
  • ロギング
  • セキュリティ(あとで)