2016-08-15 48 views

回答

0

您需要將此圖片與您的自定義配置文件的延伸,以下內容寫你自己的Dockerfile

FROM <docker-jira image name>:<tag> 

COPY <path to the server.xml on your computer, relative to Dockerfile dir> <path to desired location of server.xml inside the container> 

之後,你需要建立並運行你的新形象:

docker build . --tag <name of your image> 
docker run <name of your image> 
0

替代一) 我會說你走錯了這裏的路徑。您不希望在圖像創建過程中這樣做,而是在入口點期間。

碼頭工人在第一個容器啓動期間配置服務是非常普遍和最好的​​做法,例如,對數據庫進行種子處理,生成密碼和種子,並在您的情況下根據模板生成配置。

通常這些配置文件是由ENV變量控制的,您將其傳遞給docker run,或者更確切地說,在您的docker-compose.yml中,在更復雜的環境中,配置變量的來源可以是consul或etcd。

對於您的例子,例如你可以引入一個ENV變量'USE_SSL',然後在你的入口點使用sed來替換server.xml中的東西,但是因爲你需要更多的東西,比如設置reverse_proxy域和東西,你應該使用tiller :https://github.com/markround/tiller

創建一個server.xml.erb文件,放置想要變爲動態的變量,如果條件是如果您想排除某個節(如果未設置USE_SSL),那麼讓tiller使用ENVIRONMENT作爲數據源。

備選方案B) 如果你真的想留下來與「圖像生成」的概念(不推薦),你應該使用所謂的build_args https://docs.docker.com/engine/reference/commandline/build/

添加到您的搬運工文件

ARG USE_SSL 

RUN /some_script_you_created_to_generate_server_xml.sh $USE_SSL 

你仍然需要一個bash /無論腳本some_script_you_created_to_generate_server_xml.sh它採取的參數,並創造條件,無論你想要的。當東西變得更大時(與運行某些seds/awks相比),分櫱雖然會更方便

然後,在構建圖像時,可以使用 `docker build。 --build-arg USE_SSL = no -t yourtag

相關問題