1.0.0-beta.3 • Published 6 years ago

seel v1.0.0-beta.3

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

seel

Build Status npm Latest Version npm Downloads Conventional Commits Code Style: Prettier License

seel is a command-line tool that facilitates the build of container image 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.

screencast

Table of Contents

Install

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.

Usage

seel uses the Docker daemon to build the container image for your Node.js application. When you invoke the seel command, the Docker daemon must be running and accessible through the /var/run/docker.sock socket.

CLI

Options

NameDescription
‑v, ‑‑versionPrint version.
‑h, ‑‑helpPrint usage information.
‑‑cwdDefine the current working directory, defaults to ..
‑‑entrypointDefine the app entrypoint, defaults to bin or main script defined in package.json. The given path must be relative to the cwd.
‑‑extra‑filesDefine the extra files to include in the container image with a glob pattern, e.g. --extra-files 'public/**'.
‑‑labelDefine 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.
‑‑nameDefine the container image name, defaults to the app name defined in package.json.
‑‑pkg‑registry‑auth‑urlSet-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‑tokenDefine the authentication token for the package registry base URL previously configured.
‑‑portDefine the port that the container exposes at runtime, e.g. --port 3000 --port 4000/udp.
‑‑tagDefine 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.

API

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);
  });

Examples

  • cli - A command-line app that outputs Hello, World! or greets the name passed as an argument.

  • express - An Express app that responds {"message":"Hello, World!"} to HTTP GET / requests or greets the name passed as query param.

  • express-static - An Express app that serves the static files stored in the public directory.

Contributing

Contributions are welcome!

Want to file a bug, request a feature or contribute some code?

Check out the contribution guidelines.

License

MIT © kevinpollet