※この記事を書いているのはフロントエンドを専門にしているので、バックエンド側の「いろは」は何も知りません。
フロント専がDockerとはいったいと頭を抱えつつ、ざっくり入門する記事になります。

Dockerに入門、重い腰を上げる理由

実はというほどでもないが、nestJsもコマンド1つでローカルホストを立ち上げることができるし、公式ドキュメントもローカルホストで書かれている。つまりあえてDockerに入門する必要もないのだが、開発の参考にする記事を調べると、ことごとくDockerで作業しているし、どうやらデプロイもDockerのファイルを使って行っているようである。であれば、こちらも開発環境を合わせた方が開発がよっぽど楽になるので、この機会に入門しちゃうことにした。

なぜDockerを使うのか

と聞くと、「環境を揃えたい」という回答が良く聞こえてくるが、いまいちピンと来てない。そもそもフロントエンドであればPackage.jsonで環境を揃えられるんじゃないのと言いたくなる。けどそれを言うと無知と思われるのも嫌なので、調べてみることにした。

NodeとOSを揃えられる

Nodeのバージョンを共有できる

調べてみると、Nodeのバージョンアップを揃えられるというのが強みらしい。
これは確かに納得できる。
今までのプロジェクトでもNodeのバージョンが揃ってなくて苦労したことは良くある。Package.jsonの方で依存ライブラリを管理してもその大本であるNodeのバージョンが管理されていなければ意味がない。まあ、Voltaを使ってPackage.jsonNodeのバージョンをピン止めすれば同じと思ったけど、そもそも皆が皆NodeのパッケージマネージャにVoltaを使っているわけじゃないので、そううまくはいかない。ただそれで言うとDockerもそうなので、納得できるけどこのメリットを享受するためにDockerを入れようとは正直思わない。

Volta - The Hassle-Free JavaScript Tool Manager

OSを揃えられる

どうやらイメージという設定ファイルでOSを指定できるらしい。
つまり今までOSごとに環境構築で苦労することがあったが、それがなくなるらしい。というのもDockerを使うことで、使っているOSに環境構築するというわけではなく、Docker上のコンテナに環境を構築するので、OSに依存しなくなるということらしい。

実際に使うことでメリットを享受するしかない

なんか色々な記事を見てみたが、メリットと感じるのは上に上げた2つだけだった。導入手順を考えるとあえて使う気にもならないが、社会的にDockerを使おう的な風潮を感じるので、今回の個人開発で導入してみて、所感を述べようと思う。使わずに批判するのは一番よくないって誰かが言っていた気がするし。 あとざっと調べてみた感じ、

  • デプロイが簡単にできる?
  • 環境をそのまま渡すことができるので、譲渡しやすい?

みたいなメリットがあるのかなと感じた。 とりあえず、物は試しで手を動かして入門してみる。