This image simplifies the process of generating PDF documents from Markdown using Pandoc with LaTeX.
It starts with the official pandoc/latex:ubuntu image, and adds a few additional LaTeX packages to produce better-formatted documents. The image also includes tools so it can be used in document pipelines.
- additional LaTeX styles and packages
- simple tools (
make,wget, andunzip) - run as a non-root user
- CI/CD automated tests, builds, and publishing to GitHub Container Registry
The entrypoint of the image is set to pandoc.
So it's usage is similar to running the pandoc command directly on a Linux host.
pandoc document.md -o document.pdfTo use a pre-built version of the Docker image, run:
docker run --rm \
--volume "`pwd`:/data" \
--user `id -u`:`id -g` \
ghcr.io/jzer7/pandoc-plus:main \
document.md -o document.pdfOr use a locally built version of the image:
docker run --rm \
--volume "`pwd`:/data" \
--user `id -u`:`id -g` \
jzer7/pandoc-plus:latest \
document.md -o document.pdfAll project configuration is centralized in image.cfg. This file is the single source of truth for all build parameters:
- Image names and registry settings
- LaTeX and system packages to install
- Platform targets for multi-arch builds
- Build optimization flags
The build system will fail immediately if image.cfg is missing or if any required configuration values are not set.
The Makefile includes a target to build the image locally:
make imageTo customize the build, edit image.cfg directly:
# Edit configuration
vim image.cfg
# Build with your changes
make imageView all available Makefile targets:
make helpEssential targets:
make image- Build the Docker imagemake test-all- Run all tests (container + conversion)make show-config- Display current configurationmake clean- Clean up test artifacts and build cache
The image entrypoint is set to pandoc.
So any command you pass to docker run will be executed as arguments to pandoc.
To debug issues, you might want to bypass the entrypoint and start an interactive shell.
docker run --rm -it \
--volume "`pwd`:/data" \
--user `id -u`:`id -g` \
--entrypoint "" \
jzer7/pandoc-plus /bin/bashContainer images are automatically built and published to GitHub Container Registry.
Look at .github/workflows/build-test-publish.yml for details.
The path to the image is ghcr.io/jzer7/pandoc-plus:TAG.
Where TAG can be:
main: latest image built frommainbranchsha-<commit>: specific commitvX.Y.Z: release versions (when tagged)