Turnerの日記

個人的な記録用

express × dockerで簡易的な開発環境をつくる

今使用しているサブPCのメモリが4GB しかなく、VMの挙動が重いため、開発環境をdockerで作ってみる。

 

dockerは初めてなので、もっといい方法あったら教えてほしい。

github.com

 

やりたいこと

  • 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でよい



結果...

  • ローカルで起動時→環境変数なしでエラー
  • dockerで起動時→環境変数を読み取っている!!

環境変数を変更するときはコンテナの再起動が必要ですね