[Teil 1] Erstellen eines Docker-Containers, der mit Apache / Pandoc Markdown in HTML liefert

Einführung

Ich habe einen Docker-Container erstellt, der Apache und Pandoc enthält, damit ich meine Erfahrungen teilen kann.

Mit Pandoc können Sie Markdown in HTML oder PDF konvertieren. Sie können Markdown dynamisch in HTML konvertieren, indem Sie es in Apache einbetten. Das Einfügen der auf diese Weise erstellten Website in den Docker-Container erleichtert das Erstellen und Verteilen. Sie können sich beispielsweise für den Amazon AWS-Containerservice registrieren, um den Nutzungsbereich zu erweitern.

Docker-Dateien und andere Quellen werden auf github veröffentlicht, und erstellte Docker-Images werden auf Docker Hub veröffentlicht (siehe Ende).

Pandoc

So konvertieren Sie Markdown mit dem Pandoc-Konverter auf Ihrem lokalen PC (z. B. mit Windows WSL) in HTML:

$ ls
 test.md
$ cat test.md
 # test.md
 Hello **Wonderful** World.
$ pandoc test.md > test.html
$ ls
 test.md
 test.html
$ cat test.html
 <h1 id="test.md">test.md</h1>
 <p>Hello <strong>Wonderful</strong> World.</p>
$

Apache

Wenn Apache Pandoc ausführt, wenn auf die Markdown-Dateierweiterung "md" verwiesen wird, kann eine automatische Konvertierung in HTML realisiert werden. Es ist einfach, den externen Filtermechanismus von Apache zu verwenden. Wenn Sie in Apache Folgendes festlegen, wird der angegebene Filter ausgeführt, wenn auf die Markdown-Datei verwiesen wird. Hier heißt es "Pandoc-Filter".

[local.conf]

LoadModule ext_filter_module modules/mod_ext_filter.so

ExtFilterDefine pandoc-filter \
        mode=output intype=text/markdown outtype=text/html \
        cmd="/usr/local/apache2/pandoc-filter"

<Directory /usr/local/apache2/htdocs>
        SetOutputFilter pandoc-filter
        AddType text/markdown .md
</Directory>

Ich werde erklären.

--Laden Sie "ext_filter_module", um externe Filter mit "LoadModule" verfügbar zu machen.

Apache-Filter

Ich habe einen Apache-Filter erstellt, der Pandoc aufruft. Ein Bash-Shell-Skript, das Pandoc aus der Markdown-Quelle aufruft, wird als Standardeingabe übergeben und gibt den konvertierten HTML-Code in die Standardausgabe aus.

[pandoc-filter]

 #!/bin/bash
 BASENAME=$(basename -s .md $DOCUMENT_URI)
 /usr/bin/pandoc -f gfm -t html5 -c "/pandoc-gfm.css" \
	-T "Converted" -M title=${BASENAME}

Ergänzung.

Docker-Erstellung

Erstellen Sie einen Docker-Container, der die oben genannte Apache-Konfigurationsdatei und das Filterskript enthält.

$ ls
 Dockerfile
 usr-local-apache2/
$ ls usr-local-apache2
 local.conf
 pandoc-filter
$ cat Dockerfile
 FROM httpd:2.4
 RUN apt-get update && apt-get install -y pandoc
 COPY ./usr-local-apache2 /usr/local/apache2/
 RUN echo 'Include local.conf' >> /usr/local/apache2/conf/httpd.conf
$ docker build -t pandoc:test .

Ich werde in der Reihenfolge erklären.

--Wenn Sie einen Docker-Container erstellen, erstellen Sie eine Docker-Datei, die die Erstellungsprozedur beschreibt.

Docker-Container-Ausführung

Wenn Sie einen Docker-Container haben, versuchen Sie, ihn auf dem erstellten Host auszuführen.

$ docker run --detach -publish 8080:80 \
	--mount type=bind,src=/var/docker/pandoc/htdocs,dst=/usr/local/apache2/htdocs,ro \
	pandoc:test

Ich werde in der Reihenfolge erklären.

-- - separ ist eine Spezifikation zum Ausführen des Containers im Hintergrund (als Daemon).

Prüfung

Zuerst auf dem Hostcomputer, auf dem der Container ausgeführt wird:

$ curl localhost:8080/test.md

Greifen Sie dann mit einem Browser von außerhalb des Host-Computers darauf zu.

http://example.com:8080/test.md

Nutzungsumgebung

Referenzlink

Die Quelle von Dockerfile, Apache-Konfigurationsdatei und Apache-Filter wird auf github veröffentlicht. Sie können einen Container mit Git Clone und Docker Build erstellen.

Das erstellte Image kann auch von Docker Hub abgerufen werden.

Verwandte Seite von Yokohama Kobunsha

Written 2020/09/21

Recommended Posts

[Teil 1] Erstellen eines Docker-Containers, der mit Apache / Pandoc Markdown in HTML liefert
[Teil 2] Erstellen eines Docker-Containers, der Markdown als HTML in der Apache / Pandoc-Remote-Version liefert
[Teil 1] Erstellen eines Docker-Containers, der mit Apache / Pandoc Markdown in HTML liefert
[Teil 2] Erstellen eines Docker-Containers, der Markdown als HTML in der Apache / Pandoc-Remote-Version liefert
Erstellen einer kompakten Java-Umgebung, die unter Docker ausgeführt wird
Beginnen Sie mit der Installation von Docker auf EC2 und dem Ausführen von Yellowfin in einem Container
Erstellen einer Entwicklungsumgebung für Java-Webanwendungen mit Docker für Mac Teil1
Erstellen einer Matrixklasse in Java Teil 1
So starten Sie einen Docker-Container mit einem in einer Batchdatei bereitgestellten Volume
Eine Geschichte über einen Fehler während der Migration in Docker PHP Laravel
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
Erstellen einer kompakten Java-Umgebung, die unter Docker ausgeführt wird
Führen Sie PHP-FPM mit aktiviertem OPcache in einem schreibgeschützten Container aus
[Docker] Löschen Sie nur das Volume, das einem bestimmten Container zugeordnet ist
Erstellen Sie einen Container, der den Docker x Laravel-Code automatisch formatiert
Ich kann keine Verbindung mehr zu einer VM mit einem Docker-Container herstellen, der eine Verbindung über SSH herstellen kann
Erstellen wir einen Docker-Container, der SSH auf die Mindestkonfiguration von CentOS 8 ausführen kann