我正在嘗試使用docker-compose up
您可以使用docker run [APP_CONTAINER_NAME] [APP_OPTIONS]
的方式。如何將命令行選項發送到我以「docker-compose up」開頭的dockerized程序?
回答
docker run被定義爲:
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
雖然docker compose run
被定義爲:
docker-compose run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
在這兩種情況下,最終ARGS
(這可能是的 「APP_OPTIONS
」 任擇議定書的問題)會被傳遞給容器命令。
請注意,docker run
選項中的一些可以按原樣用於docker-compose run
(其中一個爲-d
,用於運行分離的容器命令),但不是全部。
沒有辦法將ARGS放入docker-compose文件中嗎?在我的情況下,在命令行上傳遞它們太不穩定。 – dsteinkopf
@dsteinkopf當然:使用'command'(https://docs.docker.com/compose/compose-file/#command),你可以覆蓋圖像默認命令,允許你重複圖像中定義的命令,但改變其參數。 – VonC
Docker Compose的要點是您不必記住所有的命令行開關。
如果你想改變不同上下文的環境變量,我建議你爲Compose創建一個基地common.yml
文件。然後,您可以爲每個不同的上下文創建一個新的yml文件,並使用extends
指令繼承common.yml
文件。然後,您可以使用-f
標誌到docker compose
在上下文之間切換。
另請注意,如果您只是在yml中更改一個變量,並且您可以使用外部文件作爲環境變量(如果這對您更好),則Compose不應「重建」任何內容。
您需要查看Dockerfile並查看正在處理APP_OPTIONS的內容。很有可能入口點正在選擇標誌。在這種情況下,指定的命令,使用
command: [-flag1, -flag2]
這工作,因爲當兩者都指定https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/
- 1. 如何將命令行選項傳遞給我的dockerized GoLang程序?
- 2. 如何將命令發送到正在運行的Java程序?
- 3. 如何通過命令行將參數發送到WebSetup項目
- 4. 如何使用命令行選項將文件發送到打印機?
- 5. 發送命令到其他命令行程序
- 6. 如何通過udev將命令行參數發送到進程?
- 7. 如何將命令發送到通過批處理命令行運行的EXE?
- 8. 將選項命令發送到SIP UDP服務器
- 9. python程序中的命令行選項
- 10. 如何通過命令行將命令發送到正在運行的應用程序
- 11. 將參數發送到命令行
- 12. 如何將批處理文件中的命令發送到命令行.exe?
- 13. 將ls命令的輸出送到頭
- 14. 發送命令到進程
- 15. 我如何打開一個命令行程序並用java發送命令給他們(安卓)
- 16. eclipse命令行開關以項目開頭
- 17. 將命令行選項添加到CMake
- 18. 如何從C程序向Linux命令發送命令
- 19. 如何將數據命令發送到IT_100串行端口?
- 20. 如何通過.sh文件的串行命令將命令發送到Arduino?
- 21. 是否可以將命令發送到現有的xterm進程?
- 22. 從命令行發送值?
- 23. 當命令行Java程序在工作時發送命令
- 24. 在dockerized python3 ftp命令RETR引發ConnectionResetError
- 25. 如何發送備份或恢復命令到命令窗口
- 26. 如何發送命令到是Perl
- 27. 發送輸入到PHP的命令行程序
- 28. 發送關鍵代碼到OS X上的命令行程序
- 29. 將命令發送到正在運行的java進程
- 30. 如何在GNU Info中獲得程序的命令行選項?
我真的不明白在Dockerfile命令將按照默認的參數傳遞給入口點發送到入口點問題 - 在docker-compose中,將參數放入docker-compose.yml文件中。這種方法對你有沒有問題? –
@AdrianMouat是的,它不是理想的,因爲每次你想發送一個新的選項,你必須修改docker-compose.yml,重建並重新運行。我希望能夠在運行服務時將選項發送到我的程序,因爲我可以在運行帶有docker run的主容器時執行該服務,並在我的Dockerfile中使用ENTRYPOINT來實現此行爲。 – Donovan