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

  •  
  •  
  •