Docks: Easy Dockerfile Documentation Generator 📜🐳


docks is a Python framework designed to generate Markdown documentation for your Dockerfiles. It extracts key elements such as base images, ARG/ENV variables, exposed ports, and copied/added files, producing clear, structured documentation.
Features ✨
- Extracts:
- Base Images (
FROM)
- ARG/ENV Variables with optional docstrings and references
- Exposed Ports with descriptions
- Copied/Added Files (
COPY/ADD) with context
- Outputs clean Markdown documentation for your Dockerfiles.
- Easy to use, modular, and extensible.
Installation 🚀
Install docks via Poetry or pip:
Using Poetry
poetry add docks
Using Pip
pip install docks
Usage 🛠️
Via CLI
The docks CLI allows you to quickly generate Markdown documentation for a Dockerfile without writing code.
Here is all you have to do in order to generate the documentation.
docks <dockerfile> <output>
CLI Arguments
dockerfile: Path to the Dockerfile to document.
output: Path to save the generated Markdown documentation.
Via Python
You can also easily create the documentation programmatically via Python.
Example: Generate Documentation from a Dockerfile
- Ensure you have a valid Dockerfile in your project.
- Run the following Python script
from docks.generate_doc import generate_markdown
dockerfile_path = "Dockerfile"
output_path = "README.md"
generate_markdown(dockerfile_path, output_path)
Dockerfile Docstring Convention 📝
ARG/ENV Variables
- Include a block comment directly above the variable.
- Start the comment with the variable name followed by
: for docstring extraction.
- Optionally include a reference using
@ref:.
Example
# MY_VAR: Description of the variable.
# @ref: https://example.com/docs
ARG MY_VAR=default
EXPOSE Ports
Include a comment directly above the EXPOSE command.
Start with the port number followed by : for the description.
Example
# 8080: Main HTTP server port
EXPOSE 8080
COPY/ADD Files
Add a comment directly above the COPY or ADD command for context.
Example
# Copy application code to the container
COPY src/ /app/
Testing ✅
Run tests with pytest:
pytest tests/
Contributing 🤝
We welcome contributions! Please follow these steps:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/<FEATURE_NAME>.
- Commit your changes:
git commit -m "Add feature".
- Push the branch:
git push origin feature/<FEATURE_NAME>.
- Open a pull request.