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 🙏

© 2024 – Pkg Stats / Ryan Hefner

dargstack

v2.2.2

Published

The DargStack script along with its and the template's documentation.

Downloads

99

Readme

DargStack

A template for Docker stack project layouts. Bootstrap it from github.com/dargstack/dargstack_template!

This template solves the problem of separated development and production environments in the otherwise well-defined, containerized software development process. It focuses on the development configuration, derives the production configuration from it and makes deployments a breeze!

Table of Contents

  1. Installation Example
  2. Skeleton
  3. Helper Script
  4. Configuration
  5. Example Projects

Installation Example

When using bash, you could setup this script as an executable the following way:

mkdir ~/scripts/ \
    && wget https://raw.githubusercontent.com/dargstack/dargstack/master/src/dargstack -O ~/scripts/dargstack \
    && chmod +x ~/scripts/dargstack \
    && echo 'export PATH="$PATH:$HOME/scripts"' >> ~/.bashrc \
    && . ~/.bashrc

Feel free to deviate from this example and use your personal preference!

Info for Apple users

  1. getopt on macOS differs from its Linux counterpart in that it does not support long options with two hyphens. To solve this problem gnu-getopt has to be installed on macOS:

    brew install gnu-getopt

    Dargstack will then automatically detect a getopt installation under /opt/homebrew/opt/gnu-getopt/bin/getopt.

  2. Bash on macOS is of version 3.x which does not support globstars. To run dargstack you need to install a newer bash version, i.e. from brew:

    brew install bash

    You must then always use the newly installed bash version to invoke dargstack. To simplify the call, you might want to add an alias to your ~/.bashrc

    /opt/homebrew/Cellar/bash/5.2.2/bin/bash dargstack
    # or
    echo "alias dargstack='/opt/homebrew/Cellar/bash/5.2.2/bin/bash dargstack'" >> ~/.bashrc

Skeleton

The essential idea of this template. Read the full and detailed skeleton specification at ./README-skeleton.md.

Helper Script

Requires sudo >= 1.8.21 due to usage of the extended --preserve-env list syntax. That means the minimum supported Debian version is buster.

DargStack template helper script.

usage: dargstack <module> <options>

modules
    build [sibling]           Builds the main project or the specified sibling, tagged as dev. Only for development.
    deploy                    Deploys a Docker project either from a full local development clone of the project or, with the --production parameter provided, by doing a sparse Git checkout containing only the production configuration. In the latter case derive is executed first and the existence of required environment variables is checked before deployment starts.
    derive                    Derives a ./production/stack.yml from ./development/stack.yml.
    rgen                      Generate the README.
    rm                        Removes the stack.
    self-update               Updates the helper script.
    validate                  Checks for an up-2-date README.

options
    -a, --advertise-addr      The address Docker Swarm advertises.
    -h, --help                Display this help. Usable with modules: all.
    -o, --offline             Do not try to update the checkout
    -p, --production <tag>    Execute in production mode. Version must equal a tag name or latest. Usable with modules: deploy.
    -u, --url <url>           The URL to clone from. May include the substrings <owner> and <name> that are replaced by their corresponding value that is inferred from the DargStack directory structure. Usable with modules: deploy.

Configuration

A few setup strategies for the development environment have proven themselves useful, e.g. running a local dns server.

Example Projects