關(guān)于Spring boot/cloud 在Docker -e中不能識(shí)別傳入的環(huán)境變量參數(shù)的問(wèn)題

Docker 傳入環(huán)境變量是 -e "spring.profiles.active=dev",但是在更換了java底包后,發(fā)現(xiàn)傳入的參數(shù)沒(méi)有效果,使用-e "SPRING_PROFILES_ACTIVE=dev" 居然有效果。后來(lái)發(fā)現(xiàn),spring框架在默認(rèn)值的時(shí)候,@vlaue("${spring.profiles.active:SPRING_PROFILES_ACTIVE.}",這樣,就可以傳入了?

但是為什么不能獲取帶.的系統(tǒng)變量了呢?

后來(lái)對(duì)比Dockerfile發(fā)現(xiàn),最后的CMD命令有些變化。

不能是被的Dockerfile使用的是 :
CMD java -jar app.jar
以前的寫法
CMD ["java","-jar", "app.jar"]

難道是這兩者的區(qū)別?

在網(wǎng)搜索一番
http://unixman.blog.51cto.com/10163040/1677744

后面的寫 相當(dāng)于shell form執(zhí)行,類似于/bin/bash -c ,這種執(zhí)行下,不支持環(huán)境變量中帶有.

至于為什么??

請(qǐng)看
https://unix.stackexchange.com/questions/93532/exporting-a-variable-with-dot-in-it

附錄:
在網(wǎng)搜索一番
http://unixman.blog.51cto.com/10163040/1677744
Dockerfile 中CMD 和 ENTRYPOINT指令

CMD 指令的三種格式:
CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)

推薦格式,類似于執(zhí)行exec CMD ["exectuable","param1","param2"]
作為entrypoint指令的參數(shù) CMD ["param1","param2"]
類似于執(zhí)行 /bin/bash -c CMD command param1 param2
CMD指令用于Dockerfile 文件中時(shí),只有最近的一條才會(huì)生效(存在多條CMD無(wú)有意義)。

ENTRYPOINT 指令的兩種格式:
ENTRYPOINT ["executable", "param1", "param2"] (the preferred exec form)
ENTRYPOINT command param1 param2 (shell form)

推薦格式,類似于執(zhí)行 exec ENTRYPOINT ["executable", "param1", "param2"]
類似于執(zhí)行 /bin/bash -c ENTRYPOINT command param1 param2
ENTRYPOINT 指令用于Dockerfile文件中時(shí),只有最近一條才會(huì)生效(存在多條CMD指令無(wú)意義)

共同點(diǎn):
1、CMD 和 ENTRYPOINT 指令用在Dockerfile文件中時(shí),都是最近一條指令生效
2、有兩種指令形式是重合的。
3、都可以在創(chuàng)建container 時(shí)被覆蓋

異同點(diǎn):
1、ENTRYPOINT通常用于在創(chuàng)建container時(shí)執(zhí)行一個(gè)啟動(dòng)的點(diǎn),而這個(gè)功能是cmd所不能取代的
2、CMD 指令的其中一種形式是ENTRYPOINT 指令的參數(shù),例如Dockerfile:

123
FROM ubuntuENTRYPOINT ["top", "-b"]CMD ["-c"]

被覆蓋舉例:
CMD 被覆蓋的例子,假如生成一個(gè)image 的 dockerfile 文件為如下格式:

12
FROM ubuntuCMD ["/usr/bin/wc","--help"]

docker build -t ubuntu:cmd .
創(chuàng)建container 時(shí):
docker run -it ubuntu:cmd pwd # 此時(shí)pwd 指令就覆蓋了 /usr/bin/wc --help 指令而顯示的為一個(gè)路徑。

ENTRYPOINT被覆蓋的例子,假如生成一個(gè)image 的 dockerfile 文件的格式如下:

12345
FROM debian:stableRUN apt-get update && apt-get install -y --force-yes apache2EXPOSE 80 443VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"]ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

docker build -t debian:apache .

創(chuàng)建container 時(shí):
docker run -d --entrypoint="/usr/sbin/nginx" debian:apache "-g 'daemon off;'"
此時(shí) /usr/sbin/apache2ctl -D FOREGROUND 將被 /usr/sbin/nginx -g "daemon off;" 覆蓋
且這里,-g "daemon off" 為 CMD指令作為 ENTRYPOINT指令的參數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,744評(píng)論 0 120
  • 五、Docker 端口映射 無(wú)論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問(wèn)不到的。此外,除了...
    R_X閱讀 1,957評(píng)論 0 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • 所有事情皆為因果,種瓜得瓜種豆得豆,選擇了一人獨(dú)闖就別去期待他人的關(guān)愛(ài),沒(méi)什么好不舍的,沒(méi)什么好遺憾的,好好睡吧,...
    呆子啊呆子閱讀 104評(píng)論 0 0

友情鏈接更多精彩內(nèi)容