Nachdem die Grundlagen eingerichtet sind, können wir Docker installieren, um unsere Anwendungen auszuführen.
Installation
Wir folgen den Schritten aus dem original „Installation Guide„. Dabei verwenden wir die neueste Version von Docker aus dem apt-Verzeichnis.
Anmerkung:
Da mich irgendwann der „overcommit error“ erwischt hat, schlage ich vor, die notwendigen Änderungen sofort durchzuführen. Der nötige Aufruf lautet:
echo "vm.overcommit_memory = 1" | sudo tee /etc/sysctl.d/nextcloud-aio-memory-overcommit.conf
Und jetzt müssen wir den Rechner neu starten.
sudo reboot
Verzeichnisstruktur
Als nächstes erzeugen wir die Verzeichnisstruktur, die wir für unser Setup brauchen. Dies ist ein Vorschlag und man kann das komplett anders machen, aber alle zukünftigen Beiträge werden mit diesem Setup arbeiten.
Zuerst erzeugen wir zwei Verzeichnisse für die Docker-Compose-Dateien und die Laufzeitdaten:
cd /
sudo mkdir docker
chown <username>:<groupname> docker
cd docker
mkdir docker-compose
mkdir docker-data
Jetzt erzeugen wir im Docker-Compose-Verzeichnis ein Unterverzeichnis für die „Secrets“, also Passwörter etc., die nicht jeder lesen soll. Wir packen diese deshalb in ein Verzeichnis, auf das nur der Superuser zugreifen kann:
cd docker-compose
mkdir secrets
sudo chown root:root secrets
sudo chmod 600 secrets
Als nächstes erzeugen wir die ersten beiden Secrets, nämlich Benutzername und Kennwort für die Anmeldung am SMTP-Server (da einige Container später E-Mails verschicken wollen).
sudo nano secrets/.env
In dieser Datei speichern wir die Secrets. Für’s erste kopieren wir die folgenden beiden Zeilen in die Datei, passen sie für den SMTP server an, und speichern die Datei:
SMTP_USERNAME=<username for your SMTP server>
SMTP_PASSWORD=<password>
Schließlich definieren wir noch globale Einstellungen, die wir später in den Docker-Compose-Dateien verwenden:
nano .env
Es gibt eine Reihe von Einstellungen, die wir ständig nutzen werden, daher kopieren wir die folgenden Zeilen in die leere Datei und passen sie an:
# general server settings
SERVER_IP=<server-ip>
PUID=<your UID>
PGID=<your GID>
TZ="Europe/Berlin"
# general path settings
DOCKER_ROOT="/docker"
DOCKER_COMPOSE_DIR="$DOCKER_ROOT/docker-compose"
DOCKER_DATA_DIR="$DOCKER_ROOT/docker-data"
SECRETS_DIR="$DOCKER_COMPOSE_DIR/secrets"
# email settings
SMTP_SERVER=<your SMTP server, e.g. smtp.gmail.com:587>
DEFAULT_EMAIL=<email used for sending>
Man kann UID und GID bestimmen, indem man id aus der Shell aufruft. Das Ergebnis sieht dann so aus:
uid=<your UID>(<username>) gid=<your GID>(<username>) groups=1000(<username>), …
Als letzten Schritt brauchen wir noch ein Skript, das die globalen Einstellungen nutzt, wenn wir docker compose aufrufen:
cd ~
mkdir -p .local/bin
echo > .local/bin/docker-compose
chmod a+x .local/bin/docker-compose
nano .local/bin/docker-compose
Dies erzeugt eine leere, ausführbare Datei und öffnet sie im Editor. Dorthin kopieren wir jetzt das folgende Skript und speichern es ab:
#!/bin/bash
# Script for calling docker compose
sudo docker compose --env-file /docker/docker-compose/.env --env-file /docker/docker-compose/secrets/.env up -d
Und fertig! Anstatt Docker Compose direkt aufzurufen, um einen Container zu starten, rufen wir ab sofort docker-compose auf.
Warum ein Skript, anstatt einfach docker compose aufzurufen? Nun, damit die Secrets und globalen Einstellungen funktionieren, müssen wir sie als „Environment Files“ angeben. Und weil ich faul bin und vermutlich den korrekten Aufruf sowieso vergessen werde, ist es einfacher, das in ein Skript zu packen.
◄ LVM-Partition MariaDB ►
Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter, Flattr, Xing, t3n, LinkedIn, Pinterest oder Google eventuell ins Ausland übertragen und unter Umständen auch dort gespeichert. Näheres erfahren Sie durch einen Klick auf das i.
