Commit Graph

2 Commits

Author SHA1 Message Date
Cayman
362bd5ea5d feat: support and test node 24 (#8645)
**Motivation**

- Support the latest LTS

**Description**

- support node 24

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
2025-12-03 13:32:11 -05:00
NC
71d195b98a 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>
2025-03-11 12:43:21 -07:00