我正在爲我們的Spring Boot應用程序創建一個Dockerfile。該應用程序需要幾個命令行參數。在Dockfile
末:如何參數化Dockerfile?
CMD Java的罐子Application.jar --bucket = bucket.list --key =失去
但它是硬編碼值bucket
最佳做法, key
在Dockfile
?
如果沒問題,那我就可以忍受。否則,我想知道如何參數化Dockfile
。
該應用程序將部署在AWS上,如果這爲更多的建議打開大門。
我正在爲我們的Spring Boot應用程序創建一個Dockerfile。該應用程序需要幾個命令行參數。在Dockfile
末:如何參數化Dockerfile?
CMD Java的罐子Application.jar --bucket = bucket.list --key =失去
但它是硬編碼值bucket
最佳做法, key
在Dockfile
?
如果沒問題,那我就可以忍受。否則,我想知道如何參數化Dockfile
。
該應用程序將部署在AWS上,如果這爲更多的建議打開大門。
Docker設計專注於盡可能獨立於主機環境,包括構建Docker鏡像時。有a request讓Docker構建訪問主機環境變量,但它被拒絕尋找主機的獨立性。在那裏它也評論了一些解決方法,可以適合你的問題。
無論如何,應該做什麼Application.jar?如果應用程序應該在容器內部運行(而不是在構建時間內),啓動它的正確方法是在啓動容器時使用自定義腳本運行。在那裏,你可以設置你的憑證或任何其他信息,你想從一個環境變量訪問,可以在啓動容器時設置:docker run -e "MYKEY=secret" -e "MYBUCKET=bucket" myuser/myapp /my/custom/script
我的應用程序是基於Spring Boot的REST應用程序。 – Chiron 2015-01-21 13:02:20
我沒有使用Spring(也不是Spring Boot)的經驗,但我認爲這是一種使用webapp服務器(Tomcat/Jetty ...)打包應用程序的方法,不是嗎?如果是這樣,我認爲你應該在Docker構建期間運行它,但是當你啓動容器時(使用自定義啓動腳本或直接運行命令來啓動它)。因此,您不需要在Dockerfile中訪問這些參數,但是在該啓動腳本中,您可以將參數作爲環境變量傳遞。 – 2015-01-21 15:31:01