最近ubuntu20.04にしてから、ホスト側にnodejsを入れずにどこまでいけるのかというのを試しています。
nodejsに限った話ではないのですが、言語の環境を作りたいときにそれぞれの言語のバージョン管理システムを入れるのが邪魔くさいという問題があったからです。
せっかくLinuxのディストリビューションを使っているのだから、dockerを使ったほうが楽になりそうだということで、最小限の環境を作るのにどうやったら楽になるのかを考えてみました。
手順
作業ディレクトリを作成
mkdir sandbox cd sandbox
docker-composeを作る
``` version: '3' services: app: image: node volumes:
- .:/app working_dir: /app
```
dockerコンテナでbashを立ち上げる
sudo docker-compose run -u $(id -u $USER):$(id -g $USER) app bash
npm init
npm init -y
使い方
ホスト側でファイルを編集して、実行はdockerコンテナ上でします。
そのためにホストのカレントディレクトリをマウントしておきます。
docker-compose run
で -u
オプションをつけておかないとコンテナ上でファイルを作った場合にrootユーザーで作られるので、ホスト側のユーザーのidとあわせます。
おわりに
とりあえず触ってみたいときにさっと環境を作る方法について紹介しました。
ただしこれは最小構成です。
これで環境構成が事足りるということは無いので、ここからいろいろ足していくことになると思います。
例えばmysqlを service
に足したり、 ports
の設定を足したり、.env
の設定を足したりなどなどです。
そういうときに、どう書くのかいつも忘れるので docker-composeのリファレンスも貼っておきます。
ノシ