2016-10-31 2 views
0

Ich folge the tutorial here und ich bin nicht sicher, ob ich verstehe, warum Kolben und redis vom Dockerfile pipped werden, sondern auch von Docker-compose.yml zur Verfügung gestellt.Docker komponieren Redundanz?

Ich dachte, dass Compose wurde verwendet, um mehrere Bilder zusammenzuführen, und dass diese zusammengeführten Bilder bezeichnet wurden, oder sagen, genannt vi der docker-compose.yml.

So war mein Verständnis, dass ComposeKolben und redis über ihr eigenes Bild installieren würde und sie in einem einzigen Behälter zusammenführen. Obwohl es scheint nicht zu sein, was los ist, wie Kolben und redis werden ebenfalls über den pip Befehl installiert ...

Jede Idee von dem, was hier vor sich geht?

Danke,

Antoine.

Antwort

2

Ihr Verständnis von Compose ist falsch. Es führt keine Bilder zusammen.

Compose verwaltet separate Container, die zusammen eine Anwendung bilden. Es sollte ein Image für den Redis-Server und ein anderes für die Webanwendung geben, die flask verwendet. Jedes Bild wird zum Erstellen eines Containers verwendet, sodass Sie zwei Container erhalten.

pip install redis installiert nicht den "Redis-Server", es installiert den Python-Client, der verwendet wird, um Anfragen an den Redis-Server zu senden.

+0

Hum, dies ist ein Paradigmenwechsel in der Tat ... Also bedeutet das, dass, wenn ich eine große Anwendung entwickle, die viele Abhängigkeiten (alle mit verschiedenen komplexen Möglichkeiten zur Installation) und ein großes Test-Framework, die beste Praxis hat ist es, den Code Klon, Abhängigkeiten Installation (oder Kompilierung) und Test-Framework-Installation in eine große Dockerfile zu erfassen? – arennuit

+0

Die vielen Abhängigkeiten, die ich praktisch benutze, haben ihr jeweiliges Docker-Bild. Aber wenn ich dich gut verstehe, muss ich, um meine Abhängigkeiten zu erhalten, das Abhängigkeitsbild (dh das komplexere) als das Basisbild auswählen und integrieren die anderen Abhängigkeiten von Hand (zusätzlich zu der Code-Klon-und Test-Framework-Installation)? Ist das richtig? – arennuit

+0

Oder klonen Sie den Code lieber auf dem Host als im Container (und hängen Sie den Host-Ordner als Volume im Container an)? – arennuit