啟動(dòng)docker的時(shí)候如何把參數(shù)傳遞給docker里面的項(xiàng)目(推薦)
很多時(shí)候我們要把自己本地的項(xiàng)目打成一個(gè)docker鏡像
大部分都是Tomcat或者現(xiàn)在很流行的springboot項(xiàng)目
如果只是帶參數(shù)運(yùn)行一個(gè)springboot項(xiàng)目是很簡單的,如下
java -Dserver.port=8080 -jar xxx.jar
以上命令就把端口號(hào)設(shè)置為8080啟動(dòng)jar包,無需去改jar包里面的配置文件
但是如果已經(jīng)把這個(gè)jar包打成了鏡像之后,怎么傳遞呢
看下docker run的參數(shù)選項(xiàng),里面有一個(gè)-e,環(huán)境變量
一開始被"環(huán)境"兩個(gè)字誤導(dǎo)了,以為就跟我們裝JDK的時(shí)候說的環(huán)境變量是一個(gè)意思
其實(shí)也可以用來傳遞普通變量,如下
1,springboot項(xiàng)目
先改Dockerfile:
FROM java:8 ADD microsoft.jar /root ENV PARAMS="" ENTRYPOINT ["sh","-c","java $PARAMS -jar /root/microsoft.jar"]
構(gòu)建鏡像命令:
docker build -t 鏡像名稱 .
啟動(dòng)命令:
docker run -d -e PARAMS="-Dserver.port=8080" -p 2000:8080 鏡像名稱
這樣jar包在啟動(dòng)的時(shí)候就會(huì)去讀輸入變量
2,Tomcat項(xiàng)目
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 #設(shè)置環(huán)境變量 ENV JAVA_HOME /root/jdk1.8.0_11 #設(shè)置環(huán)境變量 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #設(shè)置環(huán)境變量 ENV CATALINA_HOME /root/apache-tomcat-7.0.57 #設(shè)置環(huán)境變量 ENV CATALINA_BASE /root/apache-tomcat-7.0.57 #設(shè)置環(huán)境變量 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin ENV PARAMS="" #執(zhí)行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 存放參數(shù)的TXT文件
getParams.sh 讀取參數(shù)的腳本
startup.sh 讀完參數(shù)啟動(dòng)Tomcat
啟動(dòng)命令:
docker run -d -e PARAMS="user=root&pwd=lw123" -p 2000:8080 params
這樣Tomcat在啟動(dòng)之前就會(huì)先去處理你傳遞的參數(shù),怎么處理就根據(jù)實(shí)際的業(yè)務(wù)來處理
到此這篇關(guān)于啟動(dòng)docker的時(shí)候怎么把參數(shù)傳遞給docker里面的項(xiàng)目的文章就介紹到這了,更多相關(guān)啟動(dòng)docker傳遞參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決nacos啟動(dòng)時(shí)防火墻開啟8848的坑
最近操作Nacos時(shí)遭遇8848端口無法訪問的問題,嘗試通過安全組和firewall配置仍無法解決,最終發(fā)現(xiàn),firewall對(duì)Docker使用專門的作用域,需要在相應(yīng)作用域下開放端口,務(wù)必檢查firewall中針對(duì)Docker的設(shè)置,確保8848端口在正確的作用域內(nèi)被允許通行2022-10-10Docker如何創(chuàng)建一個(gè)Jar服務(wù)容器
這篇文章主要介紹了Docker如何創(chuàng)建一個(gè)Jar服務(wù)容器問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08解決docker數(shù)據(jù)文件過大導(dǎo)致根磁盤滿的問題
本篇文章主要介紹了解決docker數(shù)據(jù)文件過大導(dǎo)致根磁盤滿的問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04關(guān)于docker部署fastapi項(xiàng)目以及日志掛載方式
這篇文章主要介紹了關(guān)于docker部署fastapi項(xiàng)目以及日志掛載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03