asciidoctor / docker-asciidoctor

:ship: A Docker image for using the Asciidoctor toolchain to process AsciiDoc content
https://hub.docker.com/r/asciidoctor/docker-asciidoctor/
Other
321 stars 151 forks source link
asciidoctor docker hacktoberfest hacktoberfest2021

:ALPINE_VERSION: 3.20.1 :ASCIIDOCTOR_VERSION: 2.0.23 :ASCIIDOCTOR_CONFLUENCE_VERSION: 0.0.2 :ASCIIDOCTOR_PDF_VERSION: 2.3.17 :ASCIIDOCTOR_DIAGRAM_VERSION: 2.3.1 :ASCIIDOCTOR_EPUB3_VERSION: 2.1.3 :ASCIIDOCTOR_FB2_VERSION: 0.7.0 :ASCIIDOCTOR_MATHEMATICAL_VERSION: 0.3.5 :ASCIIDOCTOR_REVEALJS_VERSION: 5.1.0 :KRAMDOWN_ASCIIDOC_VERSION: 2.1.0 :ASCIIDOCTOR_BIBTEX_VERSION: 0.9.0 :ASCIIDOCTOR_KROKI_VERSION: 0.10.0 :ASCIIDOCTOR_REDUCER_VERSION: 1.0.2 = Asciidoctor Docker Container :source-highlighter: coderay

//// GitHub renders asciidoctor natively, but DockerHub does not (it needs markdown). make README.md converts this page into markdown. ////

== The environment

This Docker image provides:

This image uses Alpine Linux {ALPINE_VERSION} as base image.

NOTE: Docker Engine link:https://docs.docker.com/engine/release-notes/#20100[20.10] or later is required (or any container engine supporting link:https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0[Alpine 3.14]) to avoid unexpected No such file or directory errors (such as link:https://github.com/asciidoctor/docker-asciidoctor/issues/214[#214] or link:https://github.com/asciidoctor/docker-asciidoctor/issues/215[#215]).

NOTE: This image uses the Go-based https://github.com/kaishuu0123/erd-go/[erd-go] instead of the original Haskell-based https://github.com/BurntSushi/erd[erd] to allow the Docker image to be provided as a multi-platform image.

== How to use it

Just run:

[source,bash]

docker run -it -u $(id -u):$(id -g) -v :/documents/ asciidoctor/docker-asciidoctor

or the following for https://podman.io/[Podman]:

[source,bash]

podman run -it -v :/documents/ docker.io/asciidoctor/docker-asciidoctor

Docker/Podman maps your directory with [path]/documents directory in the container.

NOTE: You might need to add the option :z or :Z like <your directory>:/documents/:z or <your directory>:/documents/:Z if you are using SELinux. See https://docs.docker.com/storage/bind-mounts/#configure-the-selinux-label[Docker docs] or https://docs.podman.io/en/latest/markdown/podman-run.1.html#volume-v-source-volume-host-dir-container-dir-options[Podman docs].

After you start the container, you can use Asciidoctor commands to convert AsciiDoc files that you created in the directory mentioned above. You can find several examples below.

== How to contribute / do it yourself?

=== Requirements

You need the following tools:

=== How to build and test?

==== Include test in your build pipeline or test manually

You can use Bats directly to test the image. Optionally, you can specify a custom image name:

[source,bash]

If you want to use a custom name for the image, OPTIONAL

export DOCKER_IMAGE_NAME_TO_TEST=your-image-name bats tests/*.bats

=== How to scan for vulnerabilities?

==== Deploy

The goal for deploying is to make the Docker image available with the correct Docker tag in Docker Hub.

As a matter of trust and transparency for the end-users, the image is rebuilt by Docker Hub itself by triggering a build. This only works under the hypothesis of a minimalistic variation between the Docker build in the CI, and the Docker build by Docker Hub.

Deploying the image requires setting the following environment variables: DOCKERHUB_SOURCE_TOKEN and DOCKERHUB_TRIGGER_TOKEN. Their values come from a Docker Hub trigger URL: https://hub.docker.com/api/build/v1/source/${DOCKERHUB_SOURCE_TOKEN}/trigger/${DOCKERHUB_TRIGGER_TOKEN}/call/.

You might want to set these variables as secret values in your CI to avoid any leaking in the output (as curl output for instance).