Docker: Erweiterte Nutzung von Kontexten

Wie man Docker-Kontexte in Ihren Skripten verwendet

👋 Willkommen in der Stackhero-Dokumentation!

Stackhero bietet eine einsatzbereite Docker Cloud CaaS (Containers as a Service) Lösung, die zahlreiche Vorteile bietet, darunter:

  • Einfache Bereitstellung Ihrer Container in der Produktion mit nur einem docker-compose up.
  • Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://api.ihre-firma.com, https://www.ihre-firma.com, https://backoffice.ihre-firma.com).
  • Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
  • Mühelose Updates mit nur einem Klick.

Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Docker CaaS Cloud Hosting Lösung von Stackhero auszuprobieren und Ihre Container in der Produktion bereitzustellen!

Die Arbeit mit Docker-context use-Befehlen ist ideal, um Befehle manuell auszuführen. Bei der Verwendung von Skripten gibt es jedoch bessere alternative Methoden, die den Prozess vereinfachen. Anstatt den Befehl direkt aufzurufen, können Sie den gewünschten Kontext mit der Umgebungsvariable DOCKER_CONTEXT festlegen. Dieser Ansatz integriert sich nahtlos in Skript-Workflows und erhält die Konfigurationsklarheit.

In den bereitgestellten Beispielen ersetzen Sie <XXXXXX>.stackhero-network.com durch Ihre spezifische Docker-Instanz-Domain (<XXXXXX>.stackhero-network.com).

Hier ist ein Beispiel, wie man den Docker-Kontext innerhalb eines Bash-Skripts festlegt:

#!/bin/bash
set -e

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

echo "IP von Docker für Stackhero-Instanz:"
docker run --rm alpine wget -q -O - ifconfig.me

Durch das Festlegen der Umgebungsvariable DOCKER_CONTEXT können Sie den aktiven Kontext bequem direkt in Ihren Skripten verwalten.

Um das Hardcoding des DOCKER_CONTEXT zu vermeiden, können Sie dessen Wert aus einer .env-Datei laden. Diese Methode hält die Umgebungsparameter organisiert und erleichtert Anpassungen:

#!/bin/bash
set -e

source .env

echo "IP von Docker für Stackhero-Instanz:"
docker run --rm alpine wget -q -O - ifconfig.me

Erstellen Sie eine .env-Datei mit folgendem Inhalt:

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

Sie können die Variable DOCKER_CONTEXT auch in einem Makefile festlegen. Hier ist ein Beispiel für das Exportieren der Variable und das Ausführen eines Docker-Containers:

# Makefile
export DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

getIp:
	docker run --rm alpine wget -q -O - ifconfig.me

Nachdem Sie das Makefile erstellt haben, rufen Sie den Befehl auf mit:

make getIp

Wenn Sie den Fehler Makefile: *** missing separator. Stop. erhalten, stellen Sie sicher, dass die Zeile docker run [...] mit einem TAB-Zeichen und nicht mit Leerzeichen beginnt.

Sie können die Konfiguration weiter vereinfachen, indem Sie eine .env-Datei in Ihr Makefile einbinden. Dieser Ansatz gewährleistet eine zentrale Verwaltung Ihrer Umgebungsparameter:

# Makefile
include .env
export

getIp:
	docker run --rm alpine wget -q -O - ifconfig.me

Erstellen Sie eine .env-Datei mit diesem Inhalt:

DOCKER_CONTEXT=<XXXXXX>.stackhero-network.com

Führen Sie dann den Befehl aus:

make getIp

Wenn Sie den Fehler Makefile: *** missing separator. Stop. erhalten, überprüfen Sie, ob die Zeile docker run [...] mit einem TAB-Zeichen anstelle von Leerzeichen beginnt.