Wie organisieren Sie die Docker-Dateien, die zu einem Projekt gehören, wenn Sie eine Docker-Datei für die Datenbank, eine für den Anwendungsserver usw. haben? Erstellen Sie eine Art Hierarchie in der Quelle? Ein großes Unternehmensprojekt kann nicht nur aus einer Docker-Datei bestehen?
214
Antworten:
Anmerkung des Autors
Diese Antwort ist veraltet. Abb existiert nicht mehr und wurde durch Docker Compose ersetzt . Akzeptierte Antworten können nicht gelöscht werden ....
Docker Compose unterstützt das Erstellen von Projekthierarchien. So ist es jetzt einfach, eine Docker-Datei in jedem Unterverzeichnis zu unterstützen.
Ursprüngliche Antwort
Ich erstelle einfach ein Verzeichnis mit einer Docker-Datei für jede Komponente. Beispiel:
Geben Sie beim Erstellen der Container nur den Verzeichnisnamen an, und Docker wählt die richtige Docker-Datei aus.
quelle
In neueren Versionen (> = 1.8.0) von Docker können Sie dies tun
Eine große Ersparnis.
BEARBEITEN: Aktualisiere Versionen gemäß Raksjas Kommentar
BEARBEITEN: Kommentar von @vsevolod: Es ist möglich, Syntaxhervorhebungen in VS-Code zu erhalten, indem Dateien mit der Erweiterung .Dockerfile (anstelle des Namens) angegeben werden, z. B. Prod.Dockerfile, Test.Dockerfile usw.
quelle
Dockerfile.web
eine Ausführungskonfiguration. Also habe ich ein Problem erstellt: youtrack.jetbrains.com/issue/WEB-28185docker-compose.yml
Datei beispielsweise für jeden in einer Datei definierten "Dienst" verwendet werden soll ?Verwenden Sie
docker-compose
und mehrereDockerfile
in separaten VerzeichnissenWie Kingsley Uchnor sagte , können Sie mehrere
Dockerfile
pro Verzeichnis haben, die etwas darstellen, das Sie erstellen möchten.Ich möchte einen
docker
Ordner haben, der jede Anwendung und ihre Konfiguration enthält. Hier ist ein Beispiel für eine Projektordnerhierarchie für eine Webanwendung mit einer Datenbank.docker-compose.yml
Beispiel:docker-compose
Beispiel für die Verwendung der Befehlszeile:Falls Sie beim Erstellen Ihrer Docker-Datei Dateien aus früheren Ordnern benötigen
Sie können immer noch die obige Lösung verwenden und platzieren Sie Ihre
Dockerfile
in einem Verzeichnis wiedocker/web/Dockerfile
alles, was Sie brauchen , ist die Build setzencontext
in Ihremdocker-compose.yml
wie folgt aus :Auf diese Weise können Sie Folgendes tun:
und so
./docker/web/Dockerfile
ähnlich:Hier sind einige schnelle Befehle von tldr docker-compose . Weitere Informationen finden Sie in der offiziellen Dokumentation .
quelle
COPY ../package.json /app/package.json
) zu installieren ? Diese Datei befindet sich normalerweise auf Stammebene und Docker hat den Zugriff auf das übergeordnete Element verboten. Welchen Ansatz werden Sie verfolgen?web
Projekt aus.
(indocker-compose.yml
:)build: .
. Auf diese Weise kann beimweb
Erstellen auf Root-Dateien zugegriffen werden. Ich habe diese verwandte Frage gesehen: stackoverflow.com/questions/24537340/… und wir können stattdessen aus dem übergeordneten Verzeichnis erstellen, wenn wir diedocker
Befehlszeile verwenden. Diese Antwort zeigt, wie dies mit docker-compose gemacht wird: stackoverflow.com/a/45353241/ 1092815-f
Option ist in Ordnung, aber ich bevorzuge die Verwendungdocker-compose
mit Unterordnern. Ich denke, beide Antworten sind gültig. Die meisten Leute ziehen es möglicherweise vor, den StandardnamenDockerfile
beizubehalten, um die meisten IDEs sofort zu unterstützen. Ich mache die erste Antwort nicht ungültig, ich biete nur eine Alternative. Ich mag es einfach nicht,php
wenn meine IDE denkt, dass meine Docker- Datei eine Datei ist, wenn ich sie benutzeDockerfile.php
, aber ja, sie funktioniert. Ich habe einige Beispiele in der Docker-Dokumentation gesehen.Dockerfile.build
,Dockerfile.debug
Etc.example.Dockerfile
die Syntaxhervorhebungen und Symbole in VSCode beibehalten.In Intellij habe ich einfach den Namen der Docker-Dateien in * .Dockerfile geändert und den Dateityp * .Dockerfile der Docker-Syntax zugeordnet.
quelle
Fügen Sie eine Abstraktionsschicht hinzu, z. B. eine YAML-Datei wie in diesem Projekt https://github.com/larytet/dockerfile-generator, die aussieht
Ein kurzes Python-Skript / make kann alle Docker-Dateien aus der Konfigurationsdatei generieren.
quelle
Wenn Sie an einem Projekt arbeiten, für das mehrere Docker-Dateien verwendet werden müssen, erstellen Sie einfach jede Docker-Datei in einem separaten Verzeichnis. Zum Beispiel,
app / db /
Jedes der oben genannten Verzeichnisse enthält seine Docker-Datei. Wenn eine Anwendung erstellt wird, durchsucht Docker alle Verzeichnisse und erstellt alle Docker-Dateien.
quelle