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

docker-frame-tool

v1.1.1

Published

A CLI tool that automates Docker configuration and simplifies Dockerfile creation for any project.

Downloads

1,007

Readme

docker-frame-tool

1. What This Does

The Docker Frame Tool is a command-line interface (CLI) utility that automates the process of creating Docker configurations for Node.js applications. It simplifies the creation of Dockerfiles, Docker Compose files, and the setup of container ports, image names, and run commands. It supports setting up containers with or without nodemon, allowing you to easily run Node.js applications with live-reloading capabilities inside Docker.

This tool makes Docker integration for Node.js apps easy, enabling you to:

  • Automatically generate Dockerfiles
  • Create a Docker Compose setup
  • Configure port mappings
  • Mount local files for live reloading with nodemon (optional)

2. Installation

The Docker Frame Tool can be used directly with npx, so there is no need to install it globally. Simply run the following command to use it:

  npx docker-frame-tool

This will trigger the tool to start asking you for the necessary configuration details, such as the project name, Node.js version, and whether you want to use nodemon.

3. Usage/Examples

1. Run the CLI Command:

To begin setting up Docker configurations for your Node.js project, simply run:

    npx docker-frame-tool

2. Answer the Prompts:

The tool will ask a series of questions to configure the Docker environment:

  • Image/Container Name: The name of your Docker image and container (based on your project folder name).
  • Node Version: The Node.js version for your Docker container.
  • Project Type: The type of project (currently only supports Node App)
  • Port Information: Choose the port your app will run on and the type of container port.
  • Use of Nodemon: Choose whether to mount local files and use nodemon for live reloading inside the container.

3. Docker Setup:

After answering the questions, the tool will automatically generate:

  • A Dockerfile
  • A docker-compose.yml file
  • A .dockerignore file
  • Scripts added to package.json for building and running the Docker container

4. commands in package.json:

For a Simple Node Application If you configured your project without nodemon:

# Build the Docker container
npm run docker:build

# Run the Docker container in detached mode (stops when closed)
npm run docker:container

# Build and run the Docker container (not detached)
npm run docker:run

For a Node Application with Nodemon

# Start nodemon for local development
npm run dev

# Build the Docker container
npm run docker:build

# Run the Docker container in detached mode (stops when closed)
npm run docker:container

# Build and run the Docker container (not detached)
npm run docker:run

# Build and run the Docker container with volume mounting (for live reloading)
npm run docker:volume

4. Configuration Options

Dockerfile Configuration

The Dockerfile is generated based on your input and will either include nodemon or not. The key configurations are:

1. Standard Node.js App

A basic Dockerfile will be created for your app, including the necessary commands to install dependencies and run your application.

Example Dockerfile for a regular Node.js app:

FROM node:12
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 8080
CMD ["node", "index.js"]

2. Node.js App with Nodemon:

If you choose to use nodemon, a different Dockerfile is generated that installs nodemon globally and runs your application using the dev script. Example Dockerfile for a Node.js app with nodemon:

FROM node:12
RUN npm i -g nodemon
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 8080
CMD ["npm", "run", "dev"]

docker-compose.yml Configuration

The docker-compose.yml file is generated to define how the Docker container is built and run. There are two possible configurations for the Compose file depending on whether you choose to use nodemon:

1. Standard Node.js App (without Nodemon):

version: '3.8'
services:
  node-app:
    build:
      context: .
    image: my-node-app
    container_name: my-node-app
    working_dir: /app
    command: ["node", "index.js"]
    ports:
      - "8080:8080"

1. Node.js App with Nodemon (with Nodemon):

version: '3.8'
services:
  image_and_container:
    build:
      context: .
      dockerfile: Dockerfile
    image: my-node-app
    container_name: my-node-app
    command: ["node", "index.js"]
    ports:
      - "8080:8080"

  container_with_volume:
    build:
      context: .
    image: my-node-app
    container_name: my-node-app
    volumes:
      - .:/app
      - /app/node_modules
    command: ["npm", "run", "dev"]
    ports:
      - "8080:8080"

The container_with_volume section allows you to mount your local files into the container and use nodemon for auto-reloading when changes are made to the files.

5. Troubleshooting Common Issues

1. Docker is not installed:

If the tool detects that Docker is not installed, you will see a message like:

Docker is not installed or not found in the system path.

Make sure Docker is installed and running on your system. You can install Docker from Docker's official website

2. Missing package.json:

If your project does not have a package.json file, the tool will inform you:

package.json not found in the current directory.

Make sure your project is a Node.js project with a valid package.json file before running the tool.

3. Invalid Docker Commands:

If the tool fails to create the Docker configuration correctly, ensure that your project files are properly set up. The tool assumes that your project contains a package.json with a valid main entry or defaults to index.js.

4. Permissions Errors:

If you encounter permission errors when creating files, try running the tool with elevated permissions (e.g., sudo on Linux/macOS):

sudo npx docker-frame-tool