balenalib/aarch64-ubuntu-node
This image is part of the balena.io base image series for IoT devices.
1M+
This image is part of the balena.io base image series for IoT devices. The image is optimized for use with balena.io and balenaOS, but can be used in any Docker environment running on the appropriate architecture.
.
Some notable features in balenalib
base images:
Helpful package installer script called install_packages
that abstracts away the specifics of the underlying package managers. It will install the named packages with smallest number of dependencies (ignore optional dependencies), clean up the package manager medata and retry if package install fails.
Working with dynamically plugged devices: each balenalib
base image has a default ENTRYPOINT
which is defined as ENTRYPOINT ["/usr/bin/entry.sh"]
, it checks if the UDEV
flag is set to true or not (by adding ENV UDEV=1
) and if true, it will start udevd
daemon and the relevant device nodes in the container /dev will appear.
For more details, please check the features overview in our documentation.
The balenalib
images come in many flavors, each designed for a specific use case.
:<version>
or :<version>-run
This is the defacto image. The run
variant is designed to be a slim and minimal variant with only runtime essentials packaged into it.
:<version>-build
The build variant is a heavier image that includes many of the tools required for building from source. This reduces the number of packages that you will need to manually install in your Dockerfile, thus reducing the overall size of all images on your system.
Node.js is a software platform for scalable server-side and networking applications. Node.js applications are written in JavaScript and can be run within the Node.js runtime on Mac OS X, Windows, and Linux without changes.
Node.js applications are designed to maximize throughput and efficiency, using non-blocking I/O and asynchronous events. Node.js applications run single-threaded, although Node.js uses multiple threads for file and network events. Node.js is commonly used for real-time applications due to its asynchronous nature.
Node.js internally uses the Google V8 JavaScript engine to execute code; a large percentage of the basic modules are written in JavaScript. Node.js contains a built-in, asynchronous I/O library for file, socket, and HTTP communication. The HTTP and socket support allows Node.js to act as a web server without additional software such as Apache.
.
Dockerfile
links :`18.7.0 (latest)`, `16.17.0`, `14.20.0`, `12.22.12`
For more information about this image and its history, please see the relevant manifest file (aarch64-ubuntu-node
) in the balena-io-library/official-images
GitHub repo.
Dockerfile
in your Node.js app project# specify the node base image with your desired version node:<version>
FROM balenalib/aarch64-ubuntu-node:latest
# replace this with your application's default port
EXPOSE 8888
You can then build and run the Docker image:
$ docker build -t my-nodejs-app .
$ docker run -it --rm --name my-running-app my-nodejs-app
If you prefer Docker Compose:
version: "2"
services:
node:
image: "balenalib/aarch64-ubuntu-node:latest"
user: "node"
working_dir: /home/node/app
environment:
- NODE_ENV=production
volumes:
- ./:/home/node/app
expose:
- "8081"
command: "npm start"
You can then run using Docker Compose:
$ docker-compose up -d
Docker Compose example copies your current directory (including node_modules) to the container.
It assumes that your application has a file named package.json
defining start script.
For many simple, single file projects, you may find it inconvenient to write a
complete Dockerfile
. In such cases, you can run a Node.js script by using the
Node.js Docker image directly:
$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/app -w /usr/src/app balenalib/aarch64-ubuntu-node:latest node your-daemon-or-script.js
If you have any problems with or questions about this image, please contact us through a GitHub issue.
You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.
Before you start to code, we recommend discussing your plans through a GitHub issue, especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.
Documentation for this image is stored in the base images documentation. Check it out for list of all of our base images including many specialised ones for e.g. node, python, go, smaller images, etc.
You can also find more details about new features in balenalib
base images in this blog post
docker pull balenalib/aarch64-ubuntu-node