跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Dockerfile 如何传递环境变量文件并执行?
未分類
8 7 月 2020

Dockerfile 如何传递环境变量文件并执行?

Dockerfile 如何传递环境变量文件并执行?

資深大佬 : zealinux 8

启动容器时 configMap 文件 config-env.sh,挂载到 /u/app/env

AA=123 BB=456 ...大几十条... 

我在 Dockerfile 中写了

ENTRYPOINT ["sh", "-c", "${WAIT_FOR} java -jar a.jar"] 

ENTRYPOINT 改成了 CMD 也不行

我 K8s 传递的时候使用:

        env:         # NOT OK         - name: WAIT_FOR           value: "source /u/app/env/config-env.sh && "  

容器应该是启动不成功,不停重启 CrashLoopBackOff

由于平台限制,尽量使用configMap挂载文件的方式。 如果一条一条设置 env,也不好。 因为这个需要甲方人手动一个一个添加进去。 (他们不用原始的 kubectl 的 yaml 文件,而是是通过某家的 k8s 平台管理 web 操作)

大佬有話說 (8)

  • 資深大佬 : Jirajine

    你 sh 执行的脚步里面定义的变量外面是看不到的。
    直接饮用 env 文件或者把环境变量设置和程序启动命令写到一个 launcher 脚本里面,然后入口直接启动这个脚本。

  • 資深大佬 : yangbonis

    你看下 oci 的 spec 文件里 entrypoint 或者 cmd 和 env 的解析顺序,如果 env 后解析,那你 entrypoint 的语句只能做成镜像里脚本,然后 sh 那个脚本。

  • 資深大佬 : yangbonis

    可能加上转义就能用了

  • 資深大佬 : yangbonis

    还有你这 souce 的 java 子进程看不到

  • 資深大佬 : leimao

    Dockerfile 里需要有相应声明吧?
    https://leimao.github.io/blog/Docker-Building-Arguments/

  • 資深大佬 : leimao

    不好意思,把环境变量看成 argument 了。

  • 資深大佬 : leimao

    不过你这个,instead of using env, 用 argument 就能看的到变量了。

  • 資深大佬 : luhuisicnu

    java 启动参数里面可以加环境变量, -D

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具