2015-01-21 63 views
4

我正在爲我們的Spring Boot應用程序創建一個Dockerfile。該應用程序需要幾個命令行參數。在Dockfile末:如何參數化Dockerfile?

CMD Java的罐子Application.jar --bucket = bucket.list --key =失去

但它是硬編碼值bucket最佳做法, keyDockfile

如果沒問題,那我就可以忍受。否則,我想知道如何參數化Dockfile

該應用程序將部署在AWS上,如果這爲更多的建議打開大門。

回答

4

Docker設計專注於盡可能獨立於主機環境,包括構建Docker鏡像時。有a request讓Docker構建訪問主機環境變量,但它被拒絕尋找主機的獨立性。在那裏它也評論了一些解決方法,可以適合你的問題。

無論如何,應該做什麼Application.jar?如果應用程序應該在容器內部運行(而不是在構建時間內),啓動它的正確方法是在啓動容器時使用自定義腳本運行。在那裏,你可以設置你的憑證或任何其他信息,你想從一個環境變量訪問,可以在啓動容器時設置:docker run -e "MYKEY=secret" -e "MYBUCKET=bucket" myuser/myapp /my/custom/script

+0

我的應用程序是基於Spring Boot的REST應用程序。 – Chiron 2015-01-21 13:02:20

+0

我沒有使用Spring(也不是Spring Boot)的經驗,但我認爲這是一種使用webapp服務器(Tomcat/Jetty ...)打包應用程序的方法,不是嗎?如果是這樣,我認爲你應該在Docker構建期間運行它,但是當你啓動容器時(使用自定義啓動腳本或直接運行命令來啓動它)。因此,您不需要在Dockerfile中訪問這些參數,但是在該啓動腳本中,您可以將參數作爲環境變量傳遞。 – 2015-01-21 15:31:01