1. 程式人生 > >啟動docker的時候怎麼把引數傳遞給docker裡面的專案

啟動docker的時候怎麼把引數傳遞給docker裡面的專案

很多時候我們要把自己本地的專案打成一個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在啟動之前就會先去處理你傳遞的引數,怎麼處理就根據實際的業務來處理