Build container images for your Node.js applications
MIT License
seel is a command-line tool that facilitates the build of container images for your Node.js applications. You don't need to master container best practices or write a Dockerfile to build a container image, it's just as simple as invoking a command from your shell or npm script.
npm
npx seel # Run it once.
npm install --global seel # Install globally.
npm install --save-dev seel # Install locally to use it in npm scripts.
Yarn
yarn global add seel # Install globally.
yarn add seel --dev # Install locally to use it in npm scripts.
Note: seel uses the Docker daemon to build the container image. When you invoke the seel command, the daemon must be running and accessible through the
/var/run/docker.sock
socket.
Name | Description |
---|---|
‑v, ‑‑version | Print version. |
‑h, ‑‑help | Print usage information. |
‑‑cwd | Define the current working directory, defaults to . . |
‑‑entrypoint | Define the app entrypoint, defaults to bin or main script defined in package.json . The given path must be relative to the cwd. |
‑‑extra‑files | Define the extra files to include in the container image with a glob pattern, e.g. --extra-files 'public/**' . |
‑‑label | Define the container image label, e.g. --label key=value --label key2=value2 . By default, the version , description and maintainer labels are added to the container image. |
‑‑name | Define the container image name, defaults to the app name defined in package.json . |
‑‑pkg‑registry‑auth‑url | Set-up authentication for the given package registry base URL, e.g. https://myregistry.example.com . If the authentication token is not defined with ‑‑pkg‑registry‑auth‑token the environment variable AUTH_TOKEN will be used to read the authentication token. |
‑‑pkg‑registry‑auth‑token | Define the authentication token for the package registry base URL previously configured. |
‑‑port | Define the port that the container exposes at runtime, e.g. --port 3000 --port 4000/udp . |
‑‑tag | Define the container image tag, e.g. --tag latest --tag 1.0.0 . By default, the Semantic Versioning strategy is used to define the container image tags. |
import { buildImage, BuildImageOptions } from "seel";
const options: BuildImageOptions = {
entrypoint?: string;
extraFiles?: string[];
name?: string;
ports?: string[];
tags?: string[];
labels?: {
[key: string]: string
};
pkgRegistryAuth?: {
url: string;
token: string
};
};
buildImage("/usr/app", options)
.then(stream => stream
.once("error", () => {
console.log(err);
process.exit(1);
})
.pipe(process.stdout)
)
.catch(err => {
console.log(err);
process.exit(2);
});
The examples directory contains the following examples:
Contributions are welcome!
Want to file a bug, request a feature or contribute some code?
Check out the contribution guidelines.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!