npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

containr

v1.2.9

Published

Docker Build scripts for npm

Readme

Docker container builds for nodejs projects

Automatically build Docker images and run Docker contains for a project with support for npm.

Features

  • Automatically tag Docker images with version numbers
  • Release and push Docker images after testing
  • Integrated into npm plugin hooks
  • Support for npm layers to speed up and share package installs in containers
  • Support for Docker files as EJS templates

install

$ npm install --save containr

Quickstart

Build a container (default filename is Dockerfile) with the latest git tag

$ containr build <filename>

Push a dev tag to the repository:

$ containr push dev

Build, tag and push the latest tag and the npm version:

$ containr release

Setup a prepublish script that auto-builds and pushes the Docker container tagged as latest:

In package.json:

  ...
  "script": {
    "prepublish": "containr release"
  }

Auto build and push the container tagged with the latest npm release version:

In package.json:

  ...
  "scripts": {
    "postversion": "containr push",

then:

$ npm version patch
<images build with new version ... >

Workflow Example

Create a new repo for a Docker image from an example package:

$ mkdir test-project
$ cd test-project
$ npm init -y
$ npm install -S express
$ npm install -S containr

Set it up as a git repository (required):

$ git init
$ git add .
$ git ci -m 'init'

Create a simple example app:

$ cat << EOF >> server.js
const express = require('express');
let app = express();

app.get('/', (req, res) => {
  res.json({result: 'Test response'});
});

app.listen(3080, () => {
  console.log('Listening on 3080');
});
EOF
$

Edit the package.json and add an npm hook for postversion which will build the container:

{
  "name": "test-repo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "postversion": "containr push"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "~4.14.0"
  }
}

Create a simple Dockerfile.ejs with npm package layer support:

layer.npm accepts a single parameter which is the base image to build from. It defaults to Alpine Linux node.

$ cat << EOF > Dockerfile.ejs
> FROM <% layer.npm() %>
>
> WORKDIR /src
> ADD . /src
> EXPOSE 3080
> CMD ["/usr/bin/npm", "start"]
> EOF

Test the build:

$ containr test

Custom Repositories

To define a custom repository to push your images to, define them in package.json as a repository of type docker.

Example:

  "repositories": [
    {
      "type": "docker",
      "url": "hub-on.azurecr.io",
      "path": "api-server"
    }
  ],

Commands

  • build - build a container
  • tag - tag a container with the default package version
  • push - push to the repo
  • release - mark the current image release as latest and push
  • test - test the image in a temporary container
  • run - run the container