Ich versuche docker-compose up
die Art zu verwenden, wie Sie docker run [APP_CONTAINER_NAME] [APP_OPTIONS]
verwenden können.Wie kann ich Befehlszeilenoptionen an mein dockerisiertes Programm senden, das ich mit "docker-compose up" starte?
Antwort
docker run ist definiert als:
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
Während docker compose run
wie folgt definiert ist:
docker-compose run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
In beiden Fällen die endgültige ARGS
(die "APP_OPTIONS
" der Frage könnte die OP) wird an den Container-Befehl übergeben werden.
Beachten Sie, dass einige der docker run
Option verwendet werden können, wie in docker-compose run
(eine -d
, um den Container-Befehl losgelöst auszuführen), aber nicht alle von ihnen.
Gibt es keine Möglichkeit, die ARGS in die Docker-Compose-Datei zu setzen? Sie in der Befehlszeile zu übergeben, ist in meinem Fall zu volatil. – dsteinkopf
@deinkaufopf Sure: Mit 'command' (https://docs.docker.com/compose/compose-file/#command) können Sie den image default Befehl überschreiben, so dass Sie den im Bild definierten Befehl wiederholen, aber ändern können seine Parameter. – VonC
Der Punkt von Docker Compose ist, dass Sie sich nicht an alle Befehlszeilenschalter erinnern müssen.
Wenn Sie die Umgebungsvariablen für verschiedene Kontexte ändern möchten, sollten Sie eine Basisdatei common.yml
für Compose erstellen. Sie können dann für jeden anderen Kontext eine neue XML-Datei erstellen, die von der common.yml
-Datei mit der extends
-Anweisung abgeleitet wird. Sie können dann das Flag -f
auf docker compose
verwenden, um zwischen Kontexten zu wechseln.
Beachten Sie auch, dass Compose nichts "neu erstellen" sollte, wenn Sie nur eine Variable im XML ändern, und dass Sie eine externe Datei für Umgebungsvariablen verwenden können, wenn dies für Sie besser funktioniert.
Sie müssen sich die Dockerfile anschauen und sehen, was mit den APP_OPTIONS passiert. Es besteht die Möglichkeit, dass der ENTRYPOINT die Optionsflags übernimmt. In diesem Fall geben Sie den Befehl an den Einstiegspunkt senden
command: [-flag1, -flag2]
Verwendung Das funktioniert, weil der Befehl in der Dockerfile fungiert als Standard-args auf den Einstiegspunkt, wenn beide https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/
- 1. Wie starte ich ein Programm mit process.start ohne dass das Programm seine Dateien nicht finden kann
- 2. Wie kann ich mein Palidrom-Programm verbessern?
- 3. Wie starte ich ein Programm von Perl?
- 4. Wie starte ich ein Socket-Programm?
- 5. Wie starte ich das Debugging?
- 6. Wie füge ich Befehlszeilenoptionen zum Skript hinzu, das mit curl
- 7. Wie kann ich mein Programm in Swift mit RxSwift
- 8. Wie kann ich Benachrichtigungen an das Action Center senden?
- 9. Wie starte ich ein Programm mit Cold-Cache
- 10. Wie starte ich ein Programm von Webbrowsern mit PHP
- 11. Wie kann ich feststellen, wie viel Speicher mein Programm derzeit
- 12. Ich kann mein Formular nicht senden
- 13. Wie kann ich das Programm beenden?
- 14. Wie kann ich das Programm stoppen?
- 15. Wie starte ich BouncyCastle?
- 16. Wie binde ich an s-up?
- 17. Wie starte ich ein Programm, wenn ich ein Windows-Handy an meinen PC anschließe?
- 18. Mein Java-Programm hat java.lang.UnsupportedClassVersionError. Wie repariere ich das?
- 19. Wie ändere ich das Arbeitsverzeichnis für mein Programm
- 20. Wie starte ich ein Windows-GUI-Programm in Cygwin?
- 21. Wie kann ich überprüfen, ist mein Programm abstürzen?
- 22. JDB - Wie bekomme ich eine Liste von Methoden, bevor ich das Programm starte?
- 23. Wie erstelle ich mein erstes OpenGL-Programm
- 24. Wie kann ich mein Programm ordnungsgemäß abstürzen lassen, wenn ich das Cmd-Python-Modul verwende?
- 25. Wie starte ich ein anderes Programm in GUI (Python Tkinter)
- 26. Wie starte ich mein playN Spiel im Produktionsmodus lokal?
- 27. Wie ich mein Programm zu einem Hintergrundprozess machen kann
- 28. Wie kann ich mein Programm reaktionsfähiger machen? (Programm, das mindestens 200 Dateien lädt) - ich könnte 1 Idee haben
- 29. Kann ich mein Programm mit dem Prozessor auswählen?
- 30. Wie starte ich mit andengine?
angegeben verstehe ich nicht wirklich die Frage - In Docker-Compose bringen Sie Ihre Argumente in die docker-compose.yml-Datei. Gibt es ein Problem mit diesem Ansatz für Sie? –
@AdrianMouat Ja, es ist nicht ideal, denn jedes Mal, wenn Sie eine neue Option senden möchten, müssen Sie das docker-compose.yml ändern, neu erstellen und erneut ausführen. Ich möchte in der Lage sein, Optionen zu meinem Programm zu senden, wenn ich den Dienst ausführe, wie ich tun kann, wenn ich den Hauptcontainer mit 'docker run' ausführe und ENTRYPOINT in meiner Dockerfile verwende, um dieses Verhalten zu erreichen. – Donovan