-
-
Notifications
You must be signed in to change notification settings - Fork 350
Commit 71d195b
feat: add Dockerfile.dev (#7496)
We have shifted our local testing from running Lodestar binary to using
Kurtosis which requires locally built docker image.
The current Dockerfile is optimized for production release and the build
time is too long for rapid iteration during testing.
Adding Dockerfile.dev which is a stripped down version of Dockerfile and
it
- minimizes number of installs and builds
- ~~does not write git data~~
- faster image building
- larger image size by not pruning unnecessary fs
- is recommended to build and run image locally
Following are the comparison of Dockerfile and Dockerfile.dev on my
local machine fresh/uncached. It shows ~60% or 8 minute reduction in
build time.
Dockerfile:
```
NC@Chainsafe % docker build -f Dockerfile -t ensi321/lodestar:production .
[+] Building 825.7s (16/16) FINISHED docker:desktop-linux
=> [internal] load .dockerignore 0.1s
=> => transferring context: 1.14kB 0.0s
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 2.13kB 0.0s
=> [internal] load metadata for docker.io/library/node:22-slim 5.2s
=> [auth] library/node:pull token for registry-1.docker.io 0.0s
=> [build_src 1/6] FROM docker.io/library/node:22-slim@sha256:0477b569943edd0f0aa24e7881a4d9cba8c23e860802a6b 16.8s
=> => resolve docker.io/library/node:22-slim@sha256:0477b569943edd0f0aa24e7881a4d9cba8c23e860802a6b64bc4f44852 0.0s
=> => sha256:dd29906cc036aabbb7aa0a01f781531434e4fed58eae6cf90364be481e7953c4 47.98MB / 47.98MB 8.3s
=> => sha256:0477b569943edd0f0aa24e7881a4d9cba8c23e860802a6b64bc4f4485240af11 6.49kB / 6.49kB 0.0s
=> => sha256:0576f7912bf105a725a9f03fe84f0db764e15144c15a729752a3c3cbf7da5408 1.93kB / 1.93kB 0.0s
=> => sha256:491218b2b27a64456cd038200e1b7266017b24d533b461618891b178acf039b1 6.56kB / 6.56kB 0.0s
=> => sha256:4d2547c084994a809c138e688fbe4ee14eedbc6e2defc5b1c680edd16e291473 28.04MB / 28.04MB 8.8s
=> => sha256:2476b939e8425ff9be0988aab8c0840cd3dd98bd6d23be088bbc335515cb4b5d 3.31kB / 3.31kB 2.3s
=> => sha256:7a592a8c9f904dfcafed04631b7ca268b545491cfbdc3f076e673eab37864cc0 1.71MB / 1.71MB 6.1s
=> => sha256:86b77aeb969a46771ef5a94f50ae7e724c7eea48de69f3de4af37c0e4c12445f 448B / 448B 7.4s
=> => extracting sha256:4d2547c084994a809c138e688fbe4ee14eedbc6e2defc5b1c680edd16e291473 3.2s
=> => extracting sha256:2476b939e8425ff9be0988aab8c0840cd3dd98bd6d23be088bbc335515cb4b5d 0.0s
=> => extracting sha256:dd29906cc036aabbb7aa0a01f781531434e4fed58eae6cf90364be481e7953c4 3.8s
=> => extracting sha256:7a592a8c9f904dfcafed04631b7ca268b545491cfbdc3f076e673eab37864cc0 0.2s
=> => extracting sha256:86b77aeb969a46771ef5a94f50ae7e724c7eea48de69f3de4af37c0e4c12445f 0.0s
=> [internal] load build context 47.6s
=> => transferring context: 1.44GB 46.3s
=> [build_src 2/6] WORKDIR /usr/app 1.0s
=> [build_src 3/6] RUN apt-get update && apt-get install -y g++ make python3 python3-setuptools && apt-get cl 36.0s
=> [build_src 4/6] COPY . . 28.6s
=> [build_src 5/6] RUN yarn install --non-interactive --frozen-lockfile && yarn build && yarn install -- 302.1s
=> [build_src 6/6] RUN cd packages/cli && GIT_COMMIT=${COMMIT} yarn write-git-data 2.0s
=> [build_deps 4/6] COPY --from=build_src /usr/app . 45.3s
=> [build_deps 5/6] RUN yarn install --non-interactive --frozen-lockfile --production --force 216.8s
=> [build_deps 6/6] RUN cd node_modules/classic-level && yarn rebuild 14.1s
=> [stage-2 3/3] COPY --from=build_deps /usr/app . 50.2s
=> exporting to image 30.9s
=> => exporting layers 30.7s
=> => writing image sha256:e9c39c3da9512ff3b4c9e04fd13048b929a2756fe9a540d5acd96152275132cd 0.1s
=> => naming to docker.io/ensi321/lodestar:production 0.0s
NC@Chainsafe lodestar % docker image list
ensi321/lodestar production e9c39c3da951 46 seconds ago 2.07GB
```
Dockerfile.dev:
```
NC@Chainsafe lodestar % docker build -f Dockerfile.dev -t ensi321/lodestar:dev_arm .
[+] Building 282.2s (9/9) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile.dev 0.1s
=> => transferring dockerfile: 742B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 1.14kB 0.0s
=> [internal] load metadata for docker.io/library/node:22 1.8s
=> [1/4] FROM docker.io/library/node:22@sha256:f6b9c31ace05502dd98ef777aaa20464362435dcc5e312b0e213121dcf7d8b9 0.0s
=> [internal] load build context 26.4s
=> => transferring context: 1.44GB 25.9s
=> CACHED [2/4] WORKDIR /usr/app 0.0s
=> [3/4] COPY . . 19.0s
=> [4/4] RUN yarn install --non-interactive && yarn build 201.9s
=> exporting to image 32.0s
=> => exporting layers 31.8s
=> => writing image sha256:e36e5ddbf90842804a0473d9373beecad7da3295ebb6b9ddd88e64214a55102e 0.0s
=> => naming to docker.io/test/test:0.0.1 0.1s
NC@Chainsafe lodestar % docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
ensi321/lodestar dev_arm e36e5ddbf908 About a minute ago 6.24GB
```
---------
Co-authored-by: Nico Flaig <nflaig@protonmail.com>1 parent ca29dbb commit 71d195bCopy full SHA for 71d195b
2 files changed
+20
-0
lines changed+1
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
26 | 26 |
| |
27 | 27 |
| |
28 | 28 |
| |
| 29 | + | |
29 | 30 |
| |
30 | 31 |
| |
31 | 32 |
| |
|
Dockerfile.dev
Copy file name to clipboard+19
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + |
0 commit comments