Ich versuche, Docker in meinem Django-Workflow zu integrieren und ich habe alles außer einem wirklich nervigen Problem eingerichtet. Wenn ich Abhängigkeiten zu meiner requirements.txt Datei hinzufügen möchte, muss ich im Grunde nur das gesamte Container-Image für diese Abhängigkeiten neu erstellen.Was ist eine gute Möglichkeit, Python-Abhängigkeiten zu einem Docker-Container hinzuzufügen?
Zum Beispiel folgte ich dem Docker-komponieren Beispiel für Django here. die YAML-Datei ist wie folgt aufgebaut:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
und die Docker Datei, um die Web-Container zu bauen verwendet wird, wie folgt aufgebaut: ist
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Also, wenn das Bild für diese Container Anforderungen gebaut. txt wird mit den ursprünglich vorhandenen Abhängigkeiten installiert.
Wenn ich dies als meine Entwicklungsumgebung benutze, wird es sehr schwierig neue Abhängigkeiten zu dieser requirements.txt Datei hinzuzufügen, da ich den Container für die Änderungen in der zu installierenden requirements.txt neu erstellen muss.
Gibt es eine Art Best Practice in der Django-Community, um damit umzugehen? Wenn nicht, würde ich sagen, dass docker sehr schön aussieht, um eine App zu packen, sobald sie fertig ist, aber nicht sehr gut als Entwicklungsumgebung verwendet werden kann. Der Wiederaufbau des Containers dauert sehr lange, so dass viel Zeit verschwendet wird.
Ich schätze jeden Einblick. Vielen Dank.
Ja, gute Idee. Ich könnte nur Abhängigkeiten installieren lassen, wann immer der Container startet. Ich werde es versuchen. –
@SpencerCooley Je nachdem, wie viele Abhängigkeiten Sie haben, möchten Sie vielleicht, dass der Container diejenigen enthält, von denen Sie wissen, dass Sie sie immer haben werden, und dann einfach die Fähigkeit hinzufügen, mehr hinzuzufügen. Sie möchten nicht, dass der Container mehrere Minuten zum Starten benötigt. – 2rs2ts
true, also würde das Basisimage alle Grundlagen haben und das Startskript würde Abhängigkeiten installieren, die ich während des Entwicklungsprozesses verwende, wie eine Art temporäre Abhängigkeitsliste. Wenn ich bereit bin, alles rauszuschieben, kann ich einfach die Abhängigkeiten verschieben, von denen ich feststelle, dass sie für das System permanent sind. Manchmal experimentiere ich nur mit Bibliotheken, die ich nicht benutze. Es ist wie eine Dependency-Dev-Umgebung. final_requirments.txt temp_requirements.txt –