express × dockerで簡易的な開発環境をつくる
今使用しているサブPCのメモリが4GB しかなく、VMの挙動が重いため、開発環境をdockerで作ってみる。
dockerは初めてなので、もっといい方法あったら教えてほしい。
やりたいこと
- node.jsが実行できるdockerコンテナを使用
- アプリ開発用の環境変数をホストOSに登録したくない(なんとなく)
- node.jsのバージョンも複数使い分けたい(nodebrewはなんかめんどくさい)
- ファイル編集して実行するたびにイメージビルドしたくない
⇨nodemonとか使いたい
手順
参考にしたサイト
qiita.com
express-generatorでプロジェクト作成
ホスト上でnpm install
express docker-test-node
cd docker-test-node
npm install
Dockerfileを作成
expressのプロジェクトは含めず、ただのnode.jsの実行環境
docker-composeでexpressはホスト側のファイルをマウントする
FROM node:12.6.0 WORKDIR /src
コンテナ起動時に環境変数を渡すため、docker-composeのenv_fileを作る
version: '3.3' services: app: build: context: . # Dockerfile保存場所 image: node-app # イメージ名 container_name: node-app # コンテナ名 ports: # ポート接続 - 3000:3000 volumes: # mount workdir - ./node-container-test:/src env_file: envfile command: npm start
以下のコマンドを実行してコンテナ起動
docker-compose up --build
2回目からはdocker-compose upでよい
結果...
環境変数を変更するときはコンテナの再起動が必要ですね