Nehmen wir das folgende vereinfachte Beispiel:
services:
app:
image: alpine
env_file: config.env
entrypoint:
- /bin/sh
- -c
- 'echo "Var is: $$MY_VAR"'
Ich habe es config.env
lokal mit meinen lokalen Entwicklungseinstellungen und config.env
auf dem Server mit Produktionseinstellungen.
Wenn ich verwende , wird meine lokale config.env anstelle der auf dem Server verwendet. Ich möchte umgebungsspezifische Konfigurationen lieber nicht in meinem Repository speichern, die in der Docker-Dokumentation empfohlenen Methoden erfordern jedoch alle das Erstellen separater Dateien oder Dateien auf demselben Computer, auf dem Sie verwenden .docker-compose -H [email protected] up --build -d
.yml
.env
docker-compose
Meine Frage ist also: Wie kann ich die Konfiguration auf meinem Server speichern und docker-compose
auf meinem Entwicklungscomputer zum Bereitstellen verwenden? Oder ist es besser, wenn ich das Repository einfach auf den Server hochlade und docker-compose
dort ausführe, damit ich die Remote-Umgebungsdatei verwenden kann?
Antwort1
Ich habe mich schließlich dafür entschieden, mein eigenes Bereitstellungsskript zu erstellen, das die Docker-Compose-Dateien auf den Server kopiert und eine Umgebungsdatei auf dem Server verwendet:
scp docker-compose.yml $USER@$HOST:/tmp/
deploy_cmd="export \$(grep -v '#.*' \"$REMOTE_ENV_FILE\" | xargs)";
deploy_cmd="$deploy_cmd && docker stack deploy -c /tmp/docker-compose.yml my-project";
echo "Deploying to $USER@$HOST"
ssh -qA "$USER@$HOST" "$deploy_cmd" || return 1;