Tag 15: LAMP mit Docker
1 Übung 1
1.1 Schritt 1: Aufbauen der Struktur
Auftrag
- Erstellen Sie auf Ihrer VM ein Verzeichnis mit dem Namen
dockerComposeTest
- Platzieren Sie darin ein
docker-compose.yml
- Erstellen Sie nun noch die Verzeichnisse apache, php und mysql.
Neues Verzeichnis erstellen:
mkdir dockerComposeTest
cd dockerComposeTest
docker-compose.yml erstellen:
vim docker-compose.yml
docker-compose.yml
version: "3.0"
services:
apache:
build: './apache'
php:
build: './php'
mysql:
build: './mysql'
Apache, PHP und MySQL Verzeichnisse erstellen:
mkdir apache
mkdir php
mkdir mysql
1.2 Schritt 2: Ports und Networks
Auftrag
- Erstellen Sie die Port-Weiterleitungen
- Definieren Sie ein Backend und Frontend Netzwerk mit den entsprechenden Verbindungen
Port-Weiterleitung einrichten & Netzwerke definieren:
docker-compose.yml
version: "3.0"
services:
apache:
build: './apache'
ports:
- 8085:80
networks:
- frontend
- backend
depends_on:
- php
- mysql
php:
build: './php'
networks:
- backend
mysql:
build: './mysql'
networks:
- backend
networks:
backend:
frontend:
1.3 Schritt 3: Volumes
Auftrag
- Mounten Sie die Webverzeichnisse in den Container apache:
public_html
nach/usr/local/apache2/htdocs
- Mounten Sie die Webverzeichnisse in den Container php:
public_html
nach/usr/local/apache2/htdocs
tmp
nach/usr/local/tmp
- Mounten Sie das Datenbankverzeichnis in den Container mysql:
database
nach/var/lib/mysql
Verzeichnisse erstellen:
mkdir public_html
mkdir tmp
mkdir database
Verzeichnisse mounten:
docker-compose.yml
version: "3.0"
services:
apache:
build: './apache'
ports:
- 8085:80
networks:
- frontend
- backend
depends_on:
- php
- mysql
volumes:
- ./public_html:/usr/local/apache2/htdocs
php:
build: './php'
networks:
- backend
volumes:
- ./public_html:/usr/local/apache2/htdocs
- ./tmp:/usr/local/tmp
mysql:
build: './mysql'
networks:
- backend
volumes:
- ./database:/var/lib/mysql
networks:
backend:
frontend:
1.4 Schritt 4: Konfigurationen für die Container
Auftrag
- Die Container apache und mysql müssen noch beim Erstellen definierte Konfigurationen durchlaufen. Erstellen Sie also bitte folgende Konfigrationsdateien im Verzeichnis:
- Im Verzeichnis apache die Datei apache.conf erstellen
- Im Verzeichnis mysql die Datei my.cnf erstellen
- Im Verzeichnis php die Datei php.ini erstellen
1.5 Schritt 5: Dockerfiles erstellen
Auftrag
- Damit nun alle Container nach unseren Vorstellungen gebaut werden, müssen noch für jeden Container ein Dockerfile erstellt werden.
./apache/Dockerfile
FROM httpd:2.4.35-alpine
RUN apk update; \
apk upgrade;
COPY ./apache.conf /usr/local/apache2/conf/httpd.conf
EXPOSE 80
./mysql/Dockerfile
FROM mysql:8.0.13
ENV MYSQL_ROOT_PASSWORD <password>
COPY my.cnf /etc/mysql/
./php/Dockerfile
FROM php:7.3-rc-fpm-alpine
RUN apk update; \
apk upgrade;
RUN docker-php-ext-install mysqli
RUN apk add freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev
RUN docker-php-ext-install -j$(nproc) iconv
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install -j$(nproc) gd
COPY php.ini /usr/local/etc/php/php.ini
1.6 Schritt 6: Vorbereitung der Testumgebung
Auftrag
- Erstellen Sie im Verzeichnis public_html die folgenden beiden Dateien: index.html index.php
1.7 Schritt 7: Starten der Applikation und Testing
Auftrag
- Starten Sie nun die Applikation über den geeigneten Docker-Compose-Befehl
- Verifizieren Sie nun, ob die Aufrufe auf index.html und index.php von verschiedenen Containern beantwortet wird (Tip: Logging beachten!)
Docker-Compose starten:
docker-compose up