Slide 1

Slide 1 text

DockerでNodeの開発は厳しいのか? 2019/05/10 Gotanda.js #11 @mizuki_r

Slide 2

Slide 2 text

@mizuki_r 弁護士ドットコム株式会社 税理士ドットコム事業部/開発チーム チームマネージャー 2 自己紹介 JavaScript, Vue, Nuxt,
 Perl, PHP, Docker, AWS, etc…

Slide 3

Slide 3 text

免責事項 • VS Code使いの意見です • intelijも試したかったけど時間が… • 所属する組織・団体の主張ではなく、個人 の意見です • 鵜呑みにせず、参考にとどめましょう

Slide 4

Slide 4 text

Node環境もDockerにしたい

Slide 5

Slide 5 text

Node on Dockerしたい • 複数プロジェクトを並列で開発している • グローバルインストールしたくない • ndenv, nvm, etc, メンテしたくない • docker-composeに集約したい

Slide 6

Slide 6 text

Docker for Macは mounted volumeの IOが非常に遅い

Slide 7

Slide 7 text

IOが非常に遅い • mounted volumeの更新系が遅い • Nodeを用いた開発はファイルのW/Rが非常 に多くなる • npm install, build処理など • これが遅いのは致命的

Slide 8

Slide 8 text

rm -rf node_modules/* && npm install 環境 実行時間 ホストマシン 14.93s Docker with mounted volumes 86.83s

Slide 9

Slide 9 text

Dockerにmountしたvolume への更新は遅い

Slide 10

Slide 10 text

mountしなければいいのでは?

Slide 11

Slide 11 text

mounted volumeでの 大幅なIO更新をやめる

Slide 12

Slide 12 text

mounted volumeをやめる node_modulesを上書きして、ホストにマウントしなくする

Slide 13

Slide 13 text

rm -rf node_modules/* && npm install 環境 実行時間 ホストマシン 14.93s Docker with mounted volumes 86.83s Docker without mounted volumes 20.22s

Slide 14

Slide 14 text

だいぶマシになった。

Slide 15

Slide 15 text

mounted volumeしないと 困るか?

Slide 16

Slide 16 text

VS Code使いあるある • eslint, typescriptのVS Code Serverがホ ストに必要 • node_modulesを直接参照(見る・書換る) したい

Slide 17

Slide 17 text

コンテナの中で VS Code Serverを動かせればぁ…

Slide 18

Slide 18 text

VS Code Insiders

Slide 19

Slide 19 text

VS Code Insiders • vscodeの新機能を確認したり、テストした りするためのInsiders Programの後継 • 通常版のvscodeと同居でき、設定も別のエ ディタとして利用する https://code.visualstudio.com/insiders/

Slide 20

Slide 20 text

Developing inside a Container • Remote Developmentの拡張を追加するこ とでSSH, Containers, WSLとの通信が可能 • リモートでVS Code Serverを実行し、リ モートの環境で行われたあれこれをホスト 側のVS Codeに反映してくれる https://code.visualstudio.com/docs/remote/containers

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

まとめ

Slide 23

Slide 23 text

まとめ • NodeJS on DockerはIOのマウントを外せ ば軽減する • VS CodeのInsiders buildを使うことでホ ストにマウントせず開発ができる

Slide 24

Slide 24 text

実行環境

Slide 25

Slide 25 text

実行環境 • MBP 2018 Core i7 16GB • Docker version 18.09.2, build 6247962 • docker-compose version 1.23.2, build 1110ad01 • node v11.15.0

Slide 26

Slide 26 text

実験コード https://github.com/rymizuki/example-node-on-docker