bellsoft/alpaquita-linux-nodejs

Verified Publisher

By BellSoft

Updated about 20 hours ago

Alpaquita based image for Node.js.

Image
Languages & frameworks
0

10K+

bellsoft/alpaquita-linux-nodejs repository overview

bellsoft/alpaquita-linux-nodejs

What is Alpaquita Linux?

Alpaquita Linux is a lightweight operating system optimized for the deployment of cloud native applications. It is an optimal solution for running applications with various workloads and is characterized by

  • Userspace binaries protection
  • Four malloc implementations in total
  • Optimized standard C library implementation ‘musl perf’, both small and performant
  • Base image size of 3.22MB, which is perfect for running small and performant containers
  • Docker and QEMU support

Alpaquita Linux requires a small amount of resources to run. The extra modules and additional packages can be installed from Alpaquita apk repository depending on the project requirements. Alpaquita comes in two versions: one based on optimized Musl libc, and the other one on Glibc libc.

Developer and maintainer: BellSoft

For documentation and support information, refer to the official page.

What’s in this repository?

This repository contains Alpaquita Linux Stream images with Node.js and related utilities (npm).

The images are compatible with the Docker official image for Node with notable improvements:

  • There are 2 flavours of libc supported: Musl and Glibc. Using Musl often leads to a smaller final image size.
  • The images include tini which can be used to wrap the Node process for proper signal handling. To enable this set your entrypoint to ENTRYPOINT ["/usr/sbin/tini", "--"].
  • The default entrypoint is configured so that all command line arguments are passed 'as is' to the /usr/bin/node binary.

Example

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/alpaquita-linux-nodejs:musl

WORKDIR /app
COPY server.js .

USER node

ENTRYPOINT ["/usr/sbin/tini", "--"]
CMD ["node", "server.js"]

For security reasons it's recommended to use an unprivileged account for running applications inside containers. The images already come with such a user (node), so we only need to specify USER node in Dockerfile to increase security of our image.

Please also 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 alpaquita-node-example . 
$ docker run --rm -p 3000:3000 alpaquita-node-example
Listening on 0.0.0.0:3000

Accessing it will produce expected results:

$ curl http://127.0.0.1:3000
Hello World!
$ 

Tags

Alpaquita Linux supports the latest major Node.js release, and there are tags for each libc type:

  • X-glibc, X.Y-glibc, X.Y.Z-glibc - specified version of Node.js with Glibc
  • X-musl, X.Y-musl, X.Y.Z-musl - specified version of Node.js with Musl
  • glibc - latest Node.js version with Glibc
  • musl, latest - latest Node.js version with Musl

License

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 apk list -I 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.

Tag summary

Content type

Image

Digest

sha256:c2d7352f1

Size

33.5 MB

Last updated

about 20 hours ago

docker pull bellsoft/alpaquita-linux-nodejs