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
最後に
完全に自分用の備忘録なのでご参考までに