栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Docker构建过程中使用环境变量来获取脚本?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Docker构建过程中使用环境变量来获取脚本?

每个Dockerfile

RUN
步骤都运行一个新的容器和一个新的shell。如果尝试在一个shell中设置环境变量,则以后将看不到该变量。例如,您可以尝试以下Dockerfile:

FROM busyboxENV FOO=foo1RUN export FOO=foo2RUN export BAR=barCMD echo FOO is $FOO, BAR is $BAR# Prints "FOO is foo1, BAR is "

有三个好的解决方案。从最容易/最好到最难/最复杂:

  1. 完全避免使用环境变量。 将软件安装到“系统”位置,例如

    /usr
    ; 无论如何,它将被隔离在Docker映像中。(不要使用其他隔离工具(例如Python虚拟环境)或版本管理器(例如
    nvm
    rvm
    ;),只需安装所需的特定工具即可。)

  2. 使用

    ENV
    起作用:

        FROM busybox    ENV FOO=foo2    ENV BAR=bar    CMD echo FOO is $FOO, BAR is $BAR    # Prints "FOO is foo2, BAR is bar"
  1. 使用入口点脚本。 通常看起来像:
        #!/bin/sh    # Read in the file of environment settings    . /opt/wherever/env    # Then run the CMD    exec "$@"

COPY
将此脚本放入您的Dockerfile中。使之成为
ENTRYPOINT
; 使它
CMD
成为您实际正在运行的东西。

        FROM busybox    WORKDIR /app    COPY entrypoint.sh .    COPY more_stuff .    ENTRYPOINT ["/app/entrypoint.sh"]    CMD ["/app/more_stuff/my_app"]

如果你关心这样的事情,环境变量,你通过这种方式设置将不可见

docker inspect
docker exec
调试环境; 但是,如果您
dockerrun-it...sh
将它们可见。这是一个有用且足够重要的模式,
CMD
除非我专门尝试进行此类初次设置,否则我几乎总是在Dockerfile中使用它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370633.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号