Skip to main content

Docks: Easy Dockerfile Documentation Generator 📜🐳

Python

publish workflow PyPI version License: MIT

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>
# e.g.
# docks myproject/Dockerfile myproject/dockerfile-doc.md

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

  1. Ensure you have a valid Dockerfile in your project.
  2. Run the following Python script
from docks.generate_doc import generate_markdown

# Path to your Dockerfile
dockerfile_path = "Dockerfile"

# Output Markdown file
output_path = "README.md"

# Generate documentation
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:

  1. Fork the repository.
  2. Create a feature branch: git checkout -b feature/<FEATURE_NAME>.
  3. Commit your changes: git commit -m "Add feature".
  4. Push the branch: git push origin feature/<FEATURE_NAME>.
  5. Open a pull request.

Release files for docks 0.1.13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for docks 0.1.13
File Size Uploaded
docks-0.1.13.tar.gz 7.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for docks 0.1.13
File Interpreter ABI Platform
docks-0.1.13-py3-none-any.whl Python 3 none any Details

Total release size: 16.1 kB

Release files / docks-0.1.13.tar.gz

Download URL docks-0.1.13.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
82085e69a592cd96153a2decb56b41b5c2a45965832f576ca4781dcf41087820
BLAKE2b-256 checksum
How to use checksums
37c15a15a6246a5dfb3361d97cdaee4d045dc1bd5ac9d79609192a8d82bc608d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12

Release files / docks-0.1.13-py3-none-any.whl

Download URL docks-0.1.13-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
78087830aa5afefca15f78453f75443b28f490932f56d455fe6c32fc818435e6
BLAKE2b-256 checksum
How to use checksums
95e15bc9b1a14b48c8a86b74f94af7602b3891804af55c1732dd5863e55dedce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page