Hardened Containers image with Node.js.
10K+
This repository contains Hardened Containers Stream images with Node.js and related utilities (npm).
The images are compatible with the Docker official image for Node with notable improvements:
root user (node) .ENTRYPOINT ["/usr/sbin/tini", "--"]./usr/bin/node binary.Here are the steps to produce an image with the basic HTTP server application from nodejs.org.
First create a server.js file with content:
import { createServer } from 'node:http';
const server = createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World!\n');
});
server.listen(3000, '0.0.0.0', () => {
console.log('Listening on 0.0.0.0:3000');
});
Then create a Dockerfile:
FROM bellsoft/hardened-nodejs:musl
WORKDIR /app
COPY server.js .
ENTRYPOINT ["/usr/sbin/tini", "--"]
CMD ["node", "server.js"]
Please note that we configured tini to be the entrypoint. This enables our image to handle signals properly.
Finally, build and run the image:
$ docker build -t hardened-node-example .
$ docker run --rm -p 3000:3000 hardened-node-example
Listening on 0.0.0.0:3000
Accessing it will produce expected results:
$ curl http://127.0.0.1:3000
Hello World!
$
Hardened Containers images support the latest major Node.js release, and there are tags for each libc type:
As with all Docker images, these also contain other software, which may be distributed under other licenses.
The list of installed software components and their licenses can be retrieved by executing the grep -E '^[PVL]:' /var/lib/apk/db/installed command in the image.
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
Content type
Image
Digest
sha256:034400eee…
Size
38.5 MB
Last updated
3 days ago
docker pull bellsoft/hardened-nodejs:nonroot-glibc