DockerでNodeの開発は厳しいのか?2019/05/10 Gotanda.js #11@mizuki_r
View Slide
@mizuki_r弁護士ドットコム株式会社税理士ドットコム事業部/開発チームチームマネージャー2自己紹介JavaScript, Vue, Nuxt, Perl, PHP, Docker, AWS, etc…
免責事項• VS Code使いの意見です• intelijも試したかったけど時間が…• 所属する組織・団体の主張ではなく、個人の意見です• 鵜呑みにせず、参考にとどめましょう
Node環境もDockerにしたい
Node on Dockerしたい• 複数プロジェクトを並列で開発している• グローバルインストールしたくない• ndenv, nvm, etc, メンテしたくない• docker-composeに集約したい
Docker for Macはmounted volumeのIOが非常に遅い
IOが非常に遅い• mounted volumeの更新系が遅い• Nodeを用いた開発はファイルのW/Rが非常に多くなる• npm install, build処理など• これが遅いのは致命的
rm -rf node_modules/* && npm install環境 実行時間ホストマシン 14.93sDocker with mounted volumes 86.83s
Dockerにmountしたvolumeへの更新は遅い
mountしなければいいのでは?
mounted volumeでの大幅なIO更新をやめる
mounted volumeをやめるnode_modulesを上書きして、ホストにマウントしなくする
rm -rf node_modules/* && npm install環境 実行時間ホストマシン 14.93sDocker with mounted volumes 86.83sDocker without mountedvolumes20.22s
だいぶマシになった。
mounted volumeしないと困るか?
VS Code使いあるある• eslint, typescriptのVS Code Serverがホストに必要• node_modulesを直接参照(見る・書換る)したい
コンテナの中でVS Code Serverを動かせればぁ…
VS Code Insiders
VS Code Insiders• vscodeの新機能を確認したり、テストしたりするためのInsiders Programの後継• 通常版のvscodeと同居でき、設定も別のエディタとして利用するhttps://code.visualstudio.com/insiders/
Developing inside a Container• Remote Developmentの拡張を追加することでSSH, Containers, WSLとの通信が可能• リモートでVS Code Serverを実行し、リモートの環境で行われたあれこれをホスト側のVS Codeに反映してくれるhttps://code.visualstudio.com/docs/remote/containers
まとめ
まとめ• NodeJS on DockerはIOのマウントを外せば軽減する• VS CodeのInsiders buildを使うことでホストにマウントせず開発ができる
実行環境
実行環境• MBP 2018 Core i7 16GB• Docker version 18.09.2, build 6247962• docker-compose version 1.23.2, build1110ad01• node v11.15.0
実験コードhttps://github.com/rymizuki/example-node-on-docker