Docker-Secrets
Passwört nicht im Klartext in das docker-compose schreiben
-
secrets:indocker-compose.yml -
Datei auf dem Host (nicht im Git-Repo), z. B.
./secrets/watchtower_smtp_password.txt -
Im Container liegt das dann nur noch unter
/run/secrets/watchtower_smtp_password -
Die
compose.ymlenthält nur noch den Pfad, nicht das Passwort
Das ist klar besser als:
-
Passwort im Klartext direkt in
docker-compose.yml -
oder in
.envdirekt neben dem Compose-File, das dann am Ende doch im Repository landet
Es schützt vor:
-
versehentlichem Push in Git
-
versehentlichem Anzeigen in Logs,
docker inspectusw. -
„mal eben schnell Screenshot von der Compose-Datei schicken“
Es schützt nicht vor:
-
Rootzugriff auf den Host (der kann die Secret-Datei lesen)
-
jemandem, der sich in den Container einloggen darf
Für einen privaten Server oder eine kleine Umgebung ist das genau das, was man realistisch erwartet: Exposition reduzieren, nicht perfekte Kryptographie.
Beispiel für docker-compose
cd /srv/watchtower
mkdir -p secrets
echo 'DEIN-SMTP-PASSWORT-HIER' > secrets/watchtower_smtp_password
chmod 600 secrets/watchtower_smtp_password
services:
watchtower:
image: containrrr/watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime:ro
environment:
- DOCKER_API_VERSION=1.44
- WATCHTOWER_CLEANUP=true
....
# Vorher "- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=123456"
# WICHTIG: hier jetzt den PFAD zur Secret-Datei angeben, nicht das Passwort selbst
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=/run/secrets/watchtower_smtp_password
labels:
- "com.centurylinklabs.watchtower.enable=false"
- "com.centurylinklabs.watchtower.name=watchtower"
ports:
- "9443:8080"
secrets:
- watchtower_smtp_password
secrets:
watchtower_smtp_password:
file: ./secrets/watchtower_smtp_password
-
In
environmentsteht jetzt der Pfad/run/secrets/watchtower_smtp_password. -
Unter
secrets:definierst du, woher diese Datei kommt. -
Docker sorgt dafür, dass sie im Container unter
/run/secrets/watchtower_smtp_passwordlandet. -
Watchtower liest den Inhalt dieser Datei als Passwort (siehe „Secrets/Files“-Abschnitt in der Doku).
No comments to display
No comments to display