Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9229

DockerコンテナをつかったNodeJS開発・実行環境

$
0
0
DockerをつかったNodeJS開発・実行環境 NodeJSの開発をしているとき、実行環境を個別に作って残しておきたかったり、Nodeバージョンをコロコロ変えたかったりしたいので、Dockerコンテナを使ってNodeJSの開発・実行環境を作れるようにしました。 実行のたびにクリーンなコンテナを立てて、実行終わったらコンテナごと消すやり方もありますが、今回はコンテナ立てたまま動かすやり方です。 使い方としては、 開発始める前にコンテナ立てる 開発中はコンテナ立てっぱなしで、execすることでNodeJSを実行する コードの編集はホスト側(Windows/MacOS)でやる コンテナ作り直したかったらdocker-compose downで落として、docker-compose upする という形を想定しています。 Docker Composeでコンテナ立てて動かす 軽量なAlpine上でNodeJSのv16系を動かしたイメージにします。 以下のdocker-compose.ymlを作成。 docker-compose.yml version: '3' services: app: image: node:16-alpine container_name: node-container tty: true volumes: - ./src:/src working_dir: "/src" これをプロジェクトのルートフォルダにおいて、./src/以下にソースコードやpackage.jsonを置くようにします。 コンテナをたてて実行するときは、以下コマンド。 これで、コンテナが立ちっぱなしになります。 bash docker-compose up -d 必要なライブラリをインストール(npm install)する 上のdocker-compose.ymlで、 app: というかたちで、名前がappのサービスを作ったので、そのサービスを指定することで、コマンドを実行できます。 npm install をしたいので、docker-compose execを使い、 bash docker-compose exec app npm install で、さっき立てたコンテナ上でnpm installすることができます。 execで立ってるコンテナ上でプログラムを実行 npm installと同じく、docker-compose execを利用します。 bash docker-compose exec app node main.js もしくは、package.jsonをしっかり書いているようであれば、 bash docker-compose exec app npm start で、プログラムを実行できます。 コード書いて開発していく docker-compose.ymlのvolumesの欄で、./srcディレクトリをコンテナ内にマウントしてあるので、ホスト側(Windows/MacOS側)で編集した内容が、常にコンテナ内にも反映されるようになっています。 なので、Windows/MacOS上で./src/main.jsなどのソースコードをもりもり編集し、 docker-compose exec app npm start することで、もりもり開発していけます。 コンテナ立てなおす 試行錯誤するうちにコンテナの環境が汚れてくることもあるので、その時はコンテナ立てなおします。 それも簡単で、docker-compose.ymlがあるディレクトリで、 bash docker-compose down docker-compose up -d を実行すると、今まで使ってたコンテナを捨てて、新しいコンテナを立てなおすことができます。 備考 都度都度コンテナを立てて実行する NodeJSのpackage.jsonをこんな感じにします。。 ポイントはscript.clean-startのところ。 node_modulesディレクトリを消して、モジュールインストールして、Nodeを実行する流れです。 package.json { "scripts": { "start": "node ./main.js", "clean-start": "rm -r ./node_modules && npm install && npm start" }, "dependencies": { } } これで、以下のコマンドたたくと、コンテナ立てて、上記の処理を行い、終わったらコンテナを都度都度消してくれます。 bash docker-compose run --rm app npm run-script clean-start 参考にしたリンク https://qiita.com/nikadon/items/995c5705ff1171f7484d https://docs.docker.jp/compose/compose-file.html

Viewing all articles
Browse latest Browse all 9229