Ich arbeite an einem Dienst in einem 'System' orchestriert mit Docker-Compose. Der Dienst ist in einer kompilierten Sprache geschrieben und muss neu erstellt werden, wenn ich etwas ändere. Ich versuche den besten Weg zu finden, Änderungen schnell zu iterieren.Docker-Entwicklungs-Workflow für kompilierte Komponenten in einem Docker-Compose-Setup
Ich habe versucht 2 'Workflows', beide verlassen sich darauf, mit dem Quellverzeichnis über eine volume:
verknüpft, um die neueste Quelle zu erhalten.
- Rufen Sie alle Stützbehälter mit
docker-compose up -d
- Stoppen Sie den Behälter für den Dienst in der Entwicklung
- einen neuen Container das Bild mit Lauf
docker-compose run --name SERVICE --rm SERVICE /bin/bash
- Innerhalb dieses Containers laufen kompiliert und ausgeführt die Anwendung am exponierten Port.
- Starten Sie neu, indem Sie den laufenden Prozess anhalten und dann neu erstellen.
- (erfordert Dockerfile
CMD
zu bauen und dann den Dienst ausführen) - Stoppen Sie den Service:
docker-compose kill SERVICE
- Starten Sie den Dienst
docker-compose up -d --no-deps SERVICE
Das Problem ist sowohl zu lange dauern, um neu zu starten vs den Dienst lokal neu zu starten (läuft auf meinem Laptop unabhängig o f docker). Diese Konfiguration scheint bei interpretierten Sprachen, die geänderte Dateien neu laden können, in Ordnung zu sein, aber ich muss noch ein angemessen schnelles System für kompilierte Sprachdienste finden.
Docker läuft auf Ihrem Laptop oder aus der Ferne? Sie fragen sich, was Sie mit "vs lokal neu starten des Dienstes" meinen. Was verursacht, dass es "zu lange dauert, um neu zu starten"? Kompiliert langsamer? Beginnend? – thaJeztah
Ich habe versucht, dies in der Frage klarer zu machen. Docker läuft über Docker-Maschine. Wenn ich "lokal laufen" sage, beziehe ich mich darauf, den Dienst zu erstellen und auszuführen, ohne docker zu verwenden. Dies ist eine Option, aber es bedeutet, dass ich Dinge wie die Datenbank-URL usw. ändern muss. –
Ah, richtig, meine beste Vermutung ist hier, dass die Dateifreigabe zwischen dem Host und der VirtualBox VM (um es schön zu sagen) nicht sehr performant; Dies ist eine Einschränkung von VirtualBox Filesharing. Zweitens ist die VM möglicherweise nicht auf maximale Leistung eingestellt, was die Kompilierungsdauer beeinträchtigen könnte. Haben Sie versucht, z.B. die Speichermenge und/oder CPU-Anzahl für die VM erhöhen? – thaJeztah