4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IKEAのサメアイコンが一人で完走を目指すAdvent Calendar 2022

Day 25

実際のところDevBoxはDocker比較でどこまで速いのか

Last updated at Posted at 2022-12-25

最近Dockerで作った開発環境でのnpm系インストールコマンド速度問題に悩んでいました。
そんな時、ふとこの記事が目に入りました。

なんだか速そうな言葉が目につきますが、本当に速いといえるほど速いのか気になったので試してみることにしました。

環境

  • WSL2
  • Almalinux

インストール

curl -fsSL https://get.jetpack.io/devbox | bash

秒で終わりました。
速くていいっすね

環境作成

空のフォルダで以下を実行

devbox init

nodejsの追加

devbox add nodejs

shellの立ち上げ

devbox shell

devbox shellは重いですよとドキュメントに書かれていましたが、devbox add nodejsの方が長かったくらいでした。
fishだと中にいるかわかりにくかったので、bashで入りなおしました。

比較する

以下のpackage.jsonのyarn installにどれくらい時間がかかるかで比較します。

package.json
{
  "dependencies": {
    "next": "13.0.5",
    "next-themes": "^0.2.1",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "tsconfig-paths-webpack-plugin": "^4.0.0"
  },
  "devDependencies": {
    "@babel/core": "^7.20.5",
    "@storybook/addon-actions": "^6.5.14",
    "@storybook/addon-essentials": "^6.5.14",
    "@storybook/addon-interactions": "^6.5.14",
    "@storybook/addon-links": "^6.5.14",
    "@storybook/addon-postcss": "^2.0.0",
    "@storybook/builder-webpack5": "^6.5.14",
    "@storybook/client-api": "^6.5.15",
    "@storybook/manager-webpack5": "^6.5.14",
    "@storybook/react": "^6.5.14",
    "@storybook/testing-library": "^0.0.13",
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^14.4.3",
    "@types/node": "18.11.9",
    "@types/react": "18.0.25",
    "@types/react-dom": "18.0.9",
    "@types/testing-library__jest-dom": "^5.14.5",
    "@vitejs/plugin-react": "^2.2.0",
    "autoprefixer": "^10.4.13",
    "babel-loader": "^8.3.0",
    "eslint": "8.28.0",
    "eslint-config-next": "13.0.5",
    "eslint-config-prettier": "^8.5.0",
    "eslint-plugin-storybook": "^0.6.7",
    "hygen": "^6.2.11",
    "jsdom": "^20.0.3",
    "npm-run-all": "^4.1.5",
    "postcss": "^8.4.19",
    "prettier": "^2.8.0",
    "sass": "^1.56.1",
    "sass-loader": "^13.2.0",
    "storybook-addon-next-router": "^4.0.2",
    "storybook-css-modules": "^1.0.8",
    "tailwindcss": "^3.2.4",
    "typescript": "4.9.3",
    "vite": "^3.2.4",
    "vite-tsconfig-paths": "^3.6.0",
    "vitest": "^0.25.3"
  }
}

適当に色々入れていたら膨れ上がってしまった系のパッケージ群です。
普通に実行しても眉をひそめるくらいには時間かかるので、比較にはちょうど良いと思います。
ロックファイルはなしで、計測のたびに削除します。

まず参考として、通常の環境での実行結果です

success Saved lockfile.
Done in 80.94s.

________________________________________________________
Executed in   81.05 secs    fish           external
   usr time   15.79 secs   41.00 micros   15.79 secs
   sys time    9.73 secs  166.00 micros    9.73 secs

1分ちょっと。
なかなか時間がかかります。

docker

以下のdocker-compose.yamlで立ち上げた環境です。
COPY等せずに、vimをinstallしてそのまま直接package.jsonファイルを書き込みました。

実行結果は以下の通りです。

success Saved lockfile.
Done in 125.46s.

real    2m5.580s
user    0m51.004s
sys     0m37.533s

2分5秒。
まあこんなもんですね。

devbox

success Saved lockfile.
Done in 70.69s.

real    1m10.803s
user    0m15.943s
sys     0m9.392s

速すぎて草。
通常の環境と特に変わりのない速度が出ています。すげー。
この後何度か計測し直しましたが、どれも大体変わりませんでした。

おわりに

本番環境とするかといえばまた話は変わってくるのですが、開発環境としてはかなり有用ではないでしょうか。
もちろん、対応している環境などでいろいろ制限はあったりするので現時点で完全にDocker開発環境を追いやるとはまだ言えない気がします。
とはいえMariaDBやPosgreSQL、nginxなんかは対応していたので、標準的なアプリケーションは作れるといえるでしょう。

Dockerfileなんかも吐き出せますし、悩まされがちな速度でここまで出てくれるのであれば、今後にとても期待が持てそうです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?