2015-11-15 21 views
6

Ich plane, Docker zu verwenden, um meine Entwicklungsumgebung und Produktionsumgebung zu erstellen. Ich baue Django basierte App.Docker komponieren in der Produktion?

Auf Dev verwende ich docker-compose, um alle lokalen Container zu verwalten. Es ist eine schöne und bequeme Lösung. Ich betreibe Django, 3 Sellerie Warteschlangen, Rabbitmq, 2 Postgresql DBs.

Aber meine Produktionsumgebung ist ganz anders. Ich muss Gunicorn und Nginx laufen. Darüber hinaus werden DBs mit AWS RDS ausgeführt. Natürlich benötigt Django App mehr Sachen, wie verschiedene Einstellungsdateien oder mehr env vars.

Ich bin am Wandern, wie man es teilt. Sollte ich auch docker-compose da? Das erfordert separate Dateien für dev und prod, vielleicht in Zukunft mehr für das Staging usw. Wenn ja, wie wird es bereitgestellt? Mit Jenkins, ziehen Sie, starten Sie alle neu mit komponieren?

Oder vielleicht sollte ich ansible verwenden, um docker Befehle direkt auszuführen? Aber dann habe ich kein Vertrauen darauf, dass mein Entwickler derselbe ist wie Live und es ist schwieriger, sein Verhalten vorherzusagen.

Ich mag die Idee, Compose-Dateien in allen Umgebungen zu erstellen, aber ich bin mir nicht sicher, ob die Verwaltung mehrerer Dateien für verschiedene Umgebungen eine gute Idee ist. Dev benötigt weniger Umgebung und weniger Konfiguration. Ich kann Env-Datei verwenden, um alle auf Produktion zu setzen. Aber sollte ich meine Live-Einstellungen im Se-Repo behalten? Zuvor habe ich während der Bereitstellung alle Umgebungen festgelegt und dies war ein separater Prozess. Jetzt sieht es so aus, als wären Provisioning und Deployment identisch? Vielleicht ist das bei Docker so?

+2

Im Idealfall sollte der Unterschied zwischen Dev und Prod Skalierung und Zugriff auf Daten sein. Der Docker-Schwarm kann auf EC2 ausgeführt werden, wodurch Sie denselben Arbeitsablauf in der Produktion haben. Wenn Sie RDS verwenden, können die DB-URL und die Anmeldeinformationen mithilfe von Umgebungsvariablen in die Container eingegeben werden. Dies kann in Dev mithilfe von Datenbanken simuliert werden, die eigenständig in Docker-Containern ausgeführt werden. –

+0

Im dritten Projekt in Folge verwende ich separate Dateien für jede Umgebung. – Opal

Antwort

Verwandte Themen