Ubuntu Apache Webserver¶
Beispiel: Einfacher Apache2 Webserver mit http/https und eigener Start-/Indexseite
Fangen wir mit der Grundstruktur an.
Projektordner¶
Wir benötigen einen Basis- oder Projektordner $HOME/projektapache
mit einer Struktur.
Struktur Projektordner mit Dockerfile¶
.
├── Dockerfile
└── samplesite
├── index.html
└── style.css
Dockerfile erstellen¶
Das Dockerfile beschreibt mittels Direktiven den gewünschten Buildprozess.
Dockerfile mit Basis Image ubuntu:22.04 und Apache2 Installation¶
# Datei Dockerfile
FROM ubuntu:22.04
LABEL maintainer "name@somehost.com"
LABEL description "Test"
# Umgebungsvariablen und Zeitzone einstellen
# (erspart interaktive Rückfragen)
ENV TZ="Europe/Berlin" \
APACHE_RUN_USER=www-data \
APACHE_RUN_GROUP=www-data \
APACHE_LOG_DIR=/var/log/apache2
# Apache installieren, unnötige Dateien aus dem Paket-Cache
# gleich wieder entfernen, HTTPS aktivieren
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
echo $TZ > /etc/timezone && \
apt-get update && \
apt-get install -y apache2 && \
apt-get -y clean && \
rm -r /var/cache/apt /var/lib/apt/lists/* && \
a2ensite default-ssl && \
a2enmod ssl
EXPOSE 80 443
# gesamten Inhalt des Projektverzeichnisses
# samplesite nach /var/www/html kopieren
COPY samplesite/ /var/www/html
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Projektdokumente¶
Hier handelt es sich um eine einfach Website mit einer CSS-Styling-Datei.
Webdokument samplesite/index.html
Website index.html¶
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link rel="stylesheet" href="style.css">
<title>Testseite für Container Seminar Joe B.</title>
</head>
<body>
<h1>Testseite für Container Seminar Joe B.</h1>
<p>Diese Seite wird von einem Apache-Webserver präsentiert, der
in einem Docker-Container läuft.
<p>Als Base-Image kommt <tt>ubuntu:22.04</tt>
zum Einsatz.</p>
</body>
</html>
Webdokument samplesite/style.css (CSS Style)
Stylingdatei style.css¶
body {
font-family: sans-serif;
}
h1, h2 {
color: #dd1100;
}
Docker Build Prozess¶
Es folgt ein beispielhafte Vorgehen - in der Konsole - für das Beispiel: Einfacher Webserver.
Arbeitsschritte im Terminal / in der Shell¶
# Ordnerstruktur erstellen
mkdir -p $HOME/projektapache/samplesite
# in das Projektverzeichnis wechseln
cd $HOME/projektapache
# HTML/CSS-Site in HTML-Ordner kopieren
touch samplesite/index.html samplesite/style.css
# Dockerfile erstellen und Inhalt bereitstellen
touch Dockerfile
# Image erzeugen / taggen / bitte Punkt am Ende nicht vergessen!
docker build -t joebrandes/testwebserver .
# Container erzeugen
# -d Prozess im Hintergrund (detached)
# -p 8080:80 -p 8443:443 Ports/Publish
# -h webtest Hostname festlegen
# --name testwebserver Containername
# joebrandes/testwebserver Image für Container / Tag:latest
docker run -d -p 8080:80 -p 8443:443 -h webtest \
--name testwebserver joebrandes/testwebserver
Die normale (und https-gesicherte) Seite sollte sich jetzt im Browser über die entsprechenden URLs öffnen lassen!