Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/asciidoctor/docker-asciidoctor
:ship: A Docker image for using the Asciidoctor toolchain to process AsciiDoc content
https://github.com/asciidoctor/docker-asciidoctor
asciidoctor docker hacktoberfest hacktoberfest2021
Last synced: 3 days ago
JSON representation
:ship: A Docker image for using the Asciidoctor toolchain to process AsciiDoc content
- Host: GitHub
- URL: https://github.com/asciidoctor/docker-asciidoctor
- Owner: asciidoctor
- License: other
- Created: 2014-09-15T22:18:03.000Z (about 10 years ago)
- Default Branch: main
- Last Pushed: 2024-10-12T08:03:42.000Z (27 days ago)
- Last Synced: 2024-10-30T00:00:42.298Z (10 days ago)
- Topics: asciidoctor, docker, hacktoberfest, hacktoberfest2021
- Language: Shell
- Homepage: https://hub.docker.com/r/asciidoctor/docker-asciidoctor/
- Size: 1.91 MB
- Stars: 324
- Watchers: 21
- Forks: 149
- Open Issues: 28
-
Metadata Files:
- Readme: README.adoc
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - asciidoctor/docker-asciidoctor - :ship: A Docker image for using the Asciidoctor toolchain to process AsciiDoc content (hacktoberfest)
README
:ALPINE_VERSION: 3.20.3
:ASCIIDOCTOR_VERSION: 2.0.23
:ASCIIDOCTOR_CONFLUENCE_VERSION: 0.0.2
:ASCIIDOCTOR_PDF_VERSION: 2.3.19
: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:
* https://asciidoctor.org/[Asciidoctor] {ASCIIDOCTOR_VERSION}
* https://asciidoctor.org/docs/asciidoctor-diagram/[Asciidoctor Diagram] {ASCIIDOCTOR_DIAGRAM_VERSION} with ERD and Graphviz integration (supports plantuml and graphiz diagrams)
* https://asciidoctor.org/docs/asciidoctor-pdf/[Asciidoctor PDF] {ASCIIDOCTOR_PDF_VERSION}
* https://asciidoctor.org/docs/asciidoctor-epub3/[Asciidoctor EPUB3] {ASCIIDOCTOR_EPUB3_VERSION}
* https://github.com/asciidoctor/asciidoctor-fb2/[Asciidoctor FB2] {ASCIIDOCTOR_FB2_VERSION}
* https://github.com/asciidoctor/asciidoctor-mathematical[Asciidoctor Mathematical] {ASCIIDOCTOR_MATHEMATICAL_VERSION}
* https://docs.asciidoctor.org/reveal.js-converter/latest/[Asciidoctor reveal.js] {ASCIIDOCTOR_REVEALJS_VERSION}
* https://rubygems.org/gems/asciimath[AsciiMath]
* Source highlighting using http://rouge.jneen.net[Rouge], https://rubygems.org/gems/coderay[CodeRay] or https://pygments.org/[Pygments]
* https://github.com/asciidoctor/asciidoctor-confluence[Asciidoctor Confluence] {ASCIIDOCTOR_CONFLUENCE_VERSION}
* https://github.com/asciidoctor/asciidoctor-bibtex[Asciidoctor Bibtex] {ASCIIDOCTOR_BIBTEX_VERSION}
* https://github.com/Mogztter/asciidoctor-kroki[Asciidoctor Kroki] {ASCIIDOCTOR_KROKI_VERSION}
* https://github.com/asciidoctor/asciidoctor-reducer[Asciidoctor Reducer] {ASCIIDOCTOR_REDUCER_VERSION}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 `:/documents/:z` or `:/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.* To run Asciidoctor on a basic AsciiDoc file:
+
[source,bash]
----
asciidoctor sample.adoc
asciidoctor-pdf sample.adoc
asciidoctor-epub3 sample.adoc
----* To run AsciiDoc on an AsciiDoc file that contains diagrams:
+
[source,bash]
----
asciidoctor -r asciidoctor-diagram sample-with-diagram.adoc
asciidoctor-pdf -r asciidoctor-diagram sample-with-diagram.adoc
asciidoctor-epub3 -r asciidoctor-diagram sample-with-diagram.adoc
----* To run AsciiDoc on an AsciiDoc file that contains latexmath and stem blocks:
+
[source,bash]
----
asciidoctor -r asciidoctor-mathematical sample-with-diagram.adoc
asciidoctor-pdf -r asciidoctor-mathematical sample-with-diagram.adoc
asciidoctor-epub3 -r asciidoctor-mathematical sample-with-diagram.adoc
----* To use Asciidoctor Confluence:
+
[source,bash]
----
asciidoctor-confluence --host HOSTNAME --spaceKey SPACEKEY --title TITLE --username USER --password PASSWORD sample.adoc
----* To use Asciidoctor reveal.js with local downloaded reveal.js:
+
[source,bash]
----
asciidoctor-revealjs sample-slides.adoc
asciidoctor-revealjs -r asciidoctor-diagram sample-slides.adoc
----* To use Asciidoctor reveal.js with online reveal.js:
+
[source,bash]
----
asciidoctor-revealjs -a revealjsdir=https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.9.2 sample-slides.adoc
asciidoctor-revealjs -a revealjsdir=https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.9.2 -r asciidoctor-diagram sample-slides.adoc
----* To convert files in batch:
+
[source,bash]
----
docker run --rm -u $(id -u):$(id -g) -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor-pdf index.adoc
----
+
or:
+
[source,bash]
----
podman run --rm -v $(pwd):/documents/ docker.io/asciidoctor/docker-asciidoctor asciidoctor-pdf index.adoc
----== How to contribute / do it yourself?
=== Requirements
You need the following tools:
* A bash compliant command line
* link:http://man7.org/linux/man-pages/man1/make.1.html[GNU make]
* link:https://github.com/sstephenson/bats[Bats] installed and in your bash PATH
* Docker installed and in your path
* link:https://github.com/aquasecurity/trivy[Trivy] cli in case you want to scan images for vulnerabilities=== How to build and test?
* Bats is used as a test suite runner. Since the ability to build is one way of testing, it is included.
* You just have to run the Bats test suite, from the repository root:
+
[source,bash]
----
make 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?
* Trivy scans a docker image looking for software versions containing known vulnerabilities (CVEs).
It's always a good idea to scan the image to ensure no new issues are introduced.* Run the following command to replicate the repo's `CVE Scan` pipeline on an image build locally.
Note the pipeline runs nightly on the latest release version, so it can display issues solved in main branch.
+
[source,bash]
----
trivy image --severity HIGH,CRITICAL asciidoctor:latest
----==== 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).