Version | Bearbeiter | Änderungsdatum | Änderungsbemerkung |
0.1 | hase | 11-09-2020 | Seite angelegt |
0.2 | hase | 12-09-2020 | Resourcenplanung/ Netzwerkmode / Git Secret |
0.3 | hase | 12-09-2020 | Trennung nach Compose File und Docker Image |
Hi, hier sollen alle Best Practices für shack Docker Images oder Compose Files aufgeschrieben werden.
Ein Docker Container sollte einen Healthcheck definiert haben. Siehe hierzu
Ein Docker Container sollte immer eine Begrenzung der CPU und RAM Resourcen bekommen. Ohne Resourcensteuerung werden dem Container alle CPUs und jeglicher RAM angezeigt; diesen kann er dann auch allokieren (z.B. bei einem Memory Leak wird er das tun)
services: autoheal: cpu_count: 1 mem_limit: 256m
Passwörter müssen in ein zweites Compose File (docker-compose.secret.yml) eingetragen und mit
git secret hide
vor git versteckt werden.
Siehe dazu auch die allgemeine Anleitung zu Git Secrets unter …
Wenn ein Container kein Netzwerk braucht (watchtower oder autoheal) kann mit Hilfe des Parameters network_mode das Netzwerk ausgeschaltet werden. Dann wird kein „containername_default“ Netzwerk angelegt.
services: autoheal: network_mode: "none"
Es muss ein docker-compose.yml Beispiel existieren.
Wenn ein Container eine externe Abhängigkeit hat darf diese nicht hart ausgelegt sein. Crashed der Container in Abwesenheit der Abhängigkeit muss das Design überarbeitet werden.
Die Docker Images sollten alle unter einem Ort verfügbar sein. Momentan existiert eine Gruppe auf gitlab.com https://gitlab.com/shackspace/docker-images
Die Docker Images sollten alle über eine CI Pipeline automatisch über Gitlab Runner gebaut werden. In jedem Git Repo für ein Docker Image muss daher eine .gitlab-ci.yml vorhanden sein.
Das Service-Handling in Containern kann über viele Wege abgehandelt werden. Empfohlen ist als Entrypoint entweder