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.
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.
-f
ist das Konvertierungsquellformat, -t
ist das Konvertierungszielformat, -c
ist die Position des Stylesheets.
Geben Sie den HTML-Titel an, der mit -T
und -M title =
ausgegeben werden soll.
--Pandoc liest von Standardeingaben und -ausgaben zu Standardausgaben, wenn nichts angegeben ist.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.
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).
--publish
auf ihn zugegriffen werden kann.
---- mount
bindet / usr / local / apache2 / htdocs im Dokumentverzeichnis im Container an das Verzeichnis auf der Hostseite.
Andernfalls müssen Sie jedes Mal Dateien zum Container hinzufügen.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
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.
Written 2020/09/21
Recommended Posts