ごった煮

色々な事を書いてます

node の環境を docker-compose で簡易的に構築するための覚書

node のプロジェクトを扱っていると、バージョンの混在やらで環境が汚れがちなので、コンテナに押し込むようにしてるのですが、 頻繁に使わない分いろいろ忘れがちなので、いつも開発環境で使っている設定やらを備忘録として残します。

Dockerfile の準備

よくある Dockerfile を書きます。 node の Latest バージョンを取得して、コンテナの /home/app を作業用ディレクトリとして設定 3000 ポートをリッスンします

FROM node:latest

WORKDIR /home/app
USER node
ENV PORT 3000

EXPOSE 3000

ENTRYPOINT /bin/bash

Docker-compose.yml の準備

localhost の 8080 をコンテナの 3000 ポートに転送します また、初回起動時のみ npm install を実行し、そのあとにアプリケーションを立ち上げたいので、それを実行するための init.sh と npm run dev を command に仕込みます。

version: "3"
services:
  node_dev_env:
    build: .
    entrypoint: 
      - sh
    command: 
      - -c
      - sh init.sh; npm run dev
    container_name: node-docker
    ports:
      - 8080:3000
    volumes:
      - ./:/home/app

init.sh

check というファイルが存在しない場合だけ、npm install を実行し、check を生成します

#!/bin/bash

if [ -e "./check" ]; then
    echo "FILE is exit"
else
    npm install
    touch check
fi

実行

docker-compose up -d

コンテナに入りたい場合は、この後に

docker container exec -it {コンテナ名} bash

最後に

完全に自分用の備忘録なのでご参考までに