Skip to content

Commit 5bb0886

Browse files
committed
feat(node-distroless): add node-distroless image combines google distroless and dump-init
1 parent a99d80f commit 5bb0886

File tree

7 files changed

+83
-1
lines changed

7 files changed

+83
-1
lines changed

images/node-distroless/Dockerfile

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FROM node:20-alpine AS init
2+
RUN apk add --no-cache dumb-init
3+
4+
FROM gcr.io/distroless/nodejs22 AS runtime
5+
COPY --from=init /usr/bin/dumb-init /usr/bin/dumb-init
6+
ENTRYPOINT [ "/usr/bin/dumb-init", "--", "/nodejs/bin/node" ]
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM node-distroless:edge
2+
3+
WORKDIR /usr/src/app
4+
5+
COPY images/node-distroless/main.js .
6+
7+
CMD [ "main.js" ]

images/node-distroless/README.md

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# node-distroless
2+
3+
This image combines the compactness and security of distroless with the convenience of dumb-init for process management, making Node.js applications run more stably in a container environment.
4+
5+
> This image is maintained with node latest LTS version
6+
7+
## Usage
8+
9+
The simple usage example
10+
11+
```dockerfile
12+
FROM ghcr.io/ebizbase/node-distroless
13+
WORKDIR /usr/src/app
14+
COPY . .
15+
CMD [ "index.js" ]
16+
```

images/node-distroless/main.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log('NODE VERSION:' + process.version);

images/node-distroless/project.json

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"name": "node-distroless",
3+
"$schema": "../../node_modules/nx/schemas/project-schema.json",
4+
"projectType": "library",
5+
"metadata": {
6+
"version": "0.0.0"
7+
},
8+
"tags": [],
9+
"targets": {
10+
"build": {
11+
"executor": "@ebizbase/nx-docker:build",
12+
"options": {
13+
"tags": ["node-distroless:edge"],
14+
"outputs": ["type=image"]
15+
}
16+
},
17+
"build-test": {
18+
"dependsOn": ["build"],
19+
"executor": "@ebizbase/nx-docker:build",
20+
"options": {
21+
"file": "images/node-distroless/Dockerfile.test",
22+
"tags": ["node-distroless:test"],
23+
"outputs": ["type=image"]
24+
}
25+
},
26+
"test": {
27+
"dependsOn": ["build-test"],
28+
"executor": "nx:run-commands",
29+
"options": {
30+
"command": "docker run --rm node-distroless:test"
31+
}
32+
},
33+
"publish": {
34+
"executor": "@ebizbase/nx-docker:build",
35+
"options": {
36+
"tags": ["ghcr.io/ebizbase/node-distroless"],
37+
"outputs": ["type=image"]
38+
}
39+
}
40+
}
41+
}

release-config.json

+10
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,16 @@
103103
"jsonpath": "$.metadata.version"
104104
}
105105
]
106+
},
107+
"images/node-distroless": {
108+
"package-name": "node-distroless",
109+
"extra-files": [
110+
{
111+
"type": "json",
112+
"path": "project.json",
113+
"jsonpath": "$.metadata.version"
114+
}
115+
]
106116
}
107117
}
108118
}

release-manifest.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
"devcontainer-images/node-devcontainer": "1.0.0",
1111
"devcontainer-images/node-dind-devcontainer": "1.0.0",
1212
"devcontainer-images/node-dind-playwright-devcontainer": "1.0.0",
13-
"devcontainer-images/node-playwright-devcontainer": "1.0.0"
13+
"devcontainer-images/node-playwright-devcontainer": "1.0.0",
14+
"images/node-distroless": "0.0.0"
1415
}

0 commit comments

Comments
 (0)