啟動docker的時候怎麼把引數傳遞給docker裡面的專案
阿新 • • 發佈:2018-12-26
很多時候我們要把自己本地的專案打成一個docker映象
大部分都是Tomcat或者現在很流行的springboot專案
如果只是帶引數執行一個springboot專案是很簡單的,如下
java -Dserver.port=8080 -jar xxx.jar
以上命令就把埠號設定為8080啟動jar包,無需去改jar包裡面的配置檔案
但是如果已經把這個jar包打成了映象之後,怎麼傳遞呢
看下docker run的引數選項,裡面有一個-e,環境變數
一開始被"環境"兩個字誤導了,以為就跟我們裝JDK的時候說的環境變數是一個意思
其實也可以用來傳遞普通變數,如下
1,springboot專案
先改Dockerfile:
FROM java:8 ADD microsoft.jar /root ENV PARAMS="" ENTRYPOINT ["sh","-c","java $PARAMS -jar /root/microsoft.jar"]
啟動命令:
docker run -d -e PARAMS="-Dserver.port=8080" -p 2000:8080 映象名稱
這樣jar包在啟動的時候就會去讀輸入變數
2,Tomcat專案
Dockerfile:
#基本映象 FROM centos #把你上傳的jdk放到docker容器裡面的root目錄下 ADD jdk-8u11-linux-x64.tar.gz /root #把你上傳的Tomcat放到docker容器裡面的root目錄下 ADD apache-tomcat-7.0.57.tar.gz /root #設定環境變數 ENV JAVA_HOME /root/jdk1.8.0_11 #設定環境變數 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #設定環境變數 ENV CATALINA_HOME /root/apache-tomcat-7.0.57 #設定環境變數 ENV CATALINA_BASE /root/apache-tomcat-7.0.57 #設定環境變數 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin ENV PARAMS="" #執行startup.sh並開啟日誌 ENTRYPOINT echo $PARAMS > /root/params.txt && /root/apache-tomcat-7.0.57/getParams.sh && /root/apache-tomcat-7.0.57/bin/startup.sh && tail -F /root/apache-tomcat-7.0.57/logs/catalina.out
/root/params.txt 存放參數的TXT檔案
getParams.sh 讀取引數的指令碼
startup.sh 讀完引數啟動Tomcat
啟動命令:
docker run -d -e PARAMS="user=root&pwd=lw123" -p 2000:8080 params
這樣Tomcat在啟動之前就會先去處理你傳遞的引數,怎麼處理就根據實際的業務來處理