Skip to content

tudvari/dockerfile-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dockerfile-generator

Generating Dockerfile from JSON and generate JSON document from a Dockerfile.

Node.js CI npm version

Latest release note

Version 5.0.3 (28.10.2024)

  • Update dependencies

Version 5.0.2 (21.10.2023)

  • Update dependencies

Version 5.0.1 (19.09.2023)

  • Update dependencies

Version 5.0.0 (24.01.2023)

  • Reorganize code base
  • Update dependencies
  • Change code style

Release notes of previous versions: Release notes.

Installation

npm install dockerfile-generator

How to use the library

You can find here the reference doc: References.

const generator = require('dockerfile-generator')

const result = await generator.generateDockerFile(inputJson)
// Result is a generated Dockerfile.

const generateResult = generator.generateDockerFileFromArray(inputArray)
// Result is a generated Dockerfile.

const convertedJSON = generator.convertToJSON(inputDockerFile)
// Result is a generated JSON from Dockerfile.

const genereratedIgnore = await generator.generateIgnoreFile(ignoredElementsArray)
// generatedIgnore is a generated dockerignore file

Examples

Example for Dockerfile Generation JSON Input ( generateDockerFile function )
Input
    {
      "from": "nginx:latest",
      "run": [ "adduser", "--disabled-password", "-gecos", "", "testuser" ],
      "volumes": [ "/home/testuser/app" ],
      "user": "testuser",
      "working_dir": "/home/testuser/app",
      "labels": {
        "name": "value"
      },
      "env": {
        "env1": "value1",
        "env2": "value2"
      },
      "add": {
        "test.run" : "/home/testuser/app/test.run"
      },
      "copy":  {
        "test.cmd" : "/home/testuser/app/test.cmd"
      },
      "entrypoint": "tail",
      "cmd": ["-f", "/dev/null"],
      "expose": ["80/tcp"],
      "args": [ "value1", "value2"],
      "stopsignal": "stop",
      "shell": [ "/bin/bash", "-c", "echo", "hello" ],
      "comment": "This is a comment"
    }
Output
FROM nginx:latest
RUN [ "adduser", "--disabled-password", "-gecos", "", "testuser" ]
VOLUME /home/testuser/app
USER testuser
WORKDIR /home/testuser/app
LABEL name=value
ENV env1=value1
ENV env2=value2
ADD test.run /home/testuser/app/test.run
COPY test.cmd /home/testuser/app/test.cmd
ENTRYPOINT [ "tail" ]
CMD [ "-f", "/dev/null" ]
EXPOSE 80/tcp
ARG value1
ARG value2
STOPSIGNAL stop
SHELL [ "/bin/bash", "-c", "echo", "hello"]
# This is a comment
Example for Dockerfile Generation Array Input ( generateDockerFileFromArray function )
Input
  [
    {
      "from": "nginx:latest"
    },
     {
      "run": [ "adduser", "--disabled-password", "-gecos", "", "testuser" ]
    },
     {
      "volumes": [ "/home/testuser/app" ]
    },
     {
      "user": "testuser"
    },
     {
      "working_dir": "/home/testuser/app"
    },
     {  
      "labels": {
        "name": "value"
      }
    },
     {
      "env": {
        "env1": "value1",
        "env2": "value2"
      }
    },
     {
      "add": {
        "test.run" : "/home/testuser/app/test.run"
      }
    },
     {
      "copy":  {
        "test.cmd" : "/home/testuser/app/test.cmd"
      }
    },
    {  
      "entrypoint": "tail"
    },
    {
      "cmd": ["-f", "/dev/null"]
    },
    {
      "expose": ["80/tcp"]
    },
    {
      "args": [ "value1", "value2"]
    },
    {
      "stopsignal": "stop"
    },
    {
      "shell": [ "/bin/bash", "-c", "echo", "hello" ]
    },
  ]
Output
FROM nginx:latest
RUN [ "adduser", "--disabled-password", "-gecos", "", "testuser" ]
VOLUME /home/testuser/app
USER testuser
WORKDIR /home/testuser/app
LABEL name=value
ENV env1=value1
ENV env2=value2
ADD test.run /home/testuser/app/test.run
COPY test.cmd /home/testuser/app/test.cmd
ENTRYPOINT [ "tail" ]
CMD [ "-f", "/dev/null" ]
EXPOSE 80/tcp
ARG value1
ARG value2
STOPSIGNAL stop
SHELL [ "/bin/bash", "-c", "echo", "hello"]

Example for JSON Generation ( convertToJSON function )

Example Input
FROM nginx:latest
RUN [ "adduser", "--disabled-password", "-gecos", "", "testuser" ]
VOLUME /home/testuser/app
USER testuser
WORKDIR /home/testuser/app
LABEL name=value
ENV env1=value1
ENV env2=value2
ADD test.run /home/testuser/app/test.run
COPY test.cmd /home/testuser/app/test.cmd
ENTRYPOINT [ "tail" ]
CMD [ "-f", "/dev/null" ]
EXPOSE 80/tcp
ARG value1
ARG value2
STOPSIGNAL stop
SHELL [ "/bin/bash", "-c", "echo", "hello"]
# This is a comment
Example Output
    {
      "from": "nginx:latest",
      "run": [ "adduser", "--disabled-password", "-gecos", "", "testuser" ],
      "volumes": [ "/home/testuser/app" ],
      "user": "testuser",
      "working_dir": "/home/testuser/app",
      "labels": {
        "name": "value"
      },
      "env": {
        "env1": "value1",
        "env2": "value2"
      },
      "add": {
        "test.run" : "/home/testuser/app/test.run"
      },
      "copy":  {
        "test.cmd" : "/home/testuser/app/test.cmd"
      },
      "entrypoint": "tail",
      "cmd": ["-f", "/dev/null"],
      "expose": ["80/tcp"],
      "args": [ "value1", "value2"],
      "stopsignal": "stop",
      "shell": [ "/bin/bash", "-c", "echo", "hello" ],
      "comment_1": "This is a comment"
    }

Example for .dockerignore Generation ( generateIgnoreFile function )

Input
['node_modules','.git']
Output
node_modules
.git

License

Copyright (c) 2015 Tibor Udvari. Released under the MIT license. See LICENSE for details.

About

Dockerfile Generator for Node.js

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •