Docker 通过命令或文件设置环境变量

2024-04-11

我需要设置一个环境变量CLASSPATH。在该变量中,我需要设置命令的结果:

hadoop classpath --glob

这将返回大量的 java 库,并且它们都需要设置到其中CLASSPATH多变的。最大的问题是我只能在 docker 构建完成后运行这个命令,这意味着我必须在ENTRYPOINT。但我就是无法让它发挥作用。我尝试了不同的方法:

ENTRYPOINT ["sh", "-c", "export CLASSPATH=$(hadoop classpath --glob) ...."
ENTRYPOINT ["sh", "-c", "set CLASSPATH=$(hadoop classpath --glob) ...."
ENTRYPOINT ["sh", "-c", "CLASSPATH=$(hadoop classpath --glob) ...."
ENTRYPOINT ["sh", "-c", "/bin/bash && export CLASSPATH=$(hadoop classpath --glob) ...."

但这些都不起作用。该命令本身有效,我使用以下方法对其进行了测试:

ENTRYPOINT ["sh", "-c", "echo $(hadoop classpath --glob) >> /tmp/classpath.tmp ...."

启动后该文件包含正确的内容。所以只是设置和保存环境变量有问题。我应该如何设置环境变量?通常你使用类似的东西

ENV CLASSPATH="some classpath"

但在这里我不能使用ENV语句,因为它不会处理命令$(hadoop classpath --glob)


在这种情况下,我更愿意使用 bash 配置文件更改SHELL to sh -lc代替sh -c

Dockerfile

FROM alpine
RUN echo "export NAME=TARUNLALWANI" >> ~/.profile
RUN echo $NAME
SHELL ["sh", "-lc"]
RUN echo $NAME
CMD env

构建的输出

$ docker build . --no-cache
Step 1/6 : FROM alpine
Step 2/6 : RUN echo "export NAME=TARUNLALWANI" >> ~/.profile
Step 3/6 : RUN echo $NAME

Step 4/6 : SHELL sh -lc
Removing intermediate container a6a243f24519
Step 5/6 : RUN echo $NAME
TARUNLALWANI
Successfully built 054f35a4d89a

正如您所看到的,将 SHELL 更改为sh -c to sh -lc开始加载我们的个人资料。所以你将更新.profile出口CLASSPATH基于

运行容器

$ docker run 054f35a4d89a
HOSTNAME=92c4ca32b1f0
SHLVL=1
HOME=/root
PAGER=less
PS1=\h:\w\$
NAME=TARUNLALWANI
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
CHARSET=UTF-8

Edit-1

无需配置文件即可尝试此操作

ENTRYPOINT []
CMD ["/bin/sh", "-c", "export CLASSPATH=$(hadoop classpath --glob) && env"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 通过命令或文件设置环境变量 的相关文章

随机推荐

  • 使用office.js进行office加载项开发时,无法在word文档的书签中插入文本

    我正在开发一个 word 插件 主要任务是使用数据库中的数据填充文档中的书签 在 office js 中 我发现书签可以作为范围对象进行访问 并且我正在使用 rangeObject insertText text insertLocatio
  • wpf c# 按钮等待按钮按下

    好吧 我是编码初学者 所以我想做的是按钮谁会等待用户单击多个其他按钮之一以继续 void Mainbutton the program run throw so method Wait for the user to choose one
  • 了解 htaccess 文件匹配代码

    我正在尝试将 drupal 安装在我的 bluehost 托管网站的子目录中 这是一个巨大的痛苦 我认为 htaccess 中的以下几行是问题所在 当我当前导航到 mysite com subdir install php 时 出现 403
  • SML 中的 'a 和 ''a 有什么区别?

    例如 fun example a a list list a 将有以下签名 a list gt a list 如果我定义不同但内容相同怎么办 例如 fun example a a list list a 它的签名是 a list gt a
  • Android 手持设备和穿戴设备收不到消息

    我正在尝试从可穿戴设备向手持设备发送消息 然后从手持设备向可穿戴设备发送响应 两个模块都使用相同的代码和逻辑 Gradle compile com google android support wearable 2 0 0 alpha2 c
  • 图像数据类型 SQL Server 2008 C# 数据类型

    我创建了一个数据表 CREATE TABLE ProductImages ProductImageID int IDENTITY 1 1 NOT NULL ProductImage image NOT NULL CONSTRAINT PK
  • 设置属性“system.windows.resourcedictionary.deferrablecontent”引发异常

    我正在运行 Visual Studio 2012 当我向项目添加新文件 引用时 会出现消息框并显示错误消息 设置属性 system windows resourcedictionary deferrablecontent 引发异常 我读了一
  • Linux:如何对系统内存施加负载?

    我正在开发一个小功能 它可以让我的用户了解 CPU 的占用情况 我在用着cat proc loadavg 它返回众所周知的 3 个数字 我的问题是 当我正在开发时 CPU 目前没有做任何事情 有没有一种好方法可以在CPU上产生一些负载 我在
  • iOS 不使用[电子邮件受保护]

    我有 3 张图片 test png email protected cdn cgi l email protection email protected cdn cgi l email protection 在IBOutlet中 设置一个U
  • 如何绘制高分辨率图表

    我使用 matplotlib 绘制了一些实验结果 在这里讨论过 循环文件并绘图 https stackoverflow com questions 39676294 looping over files and plotting pytho
  • 计算非凸多面体的外向法线

    如果多面体的所有节点 可能是非凸的 及其坐标已知 面的点按顺序给出 绕外法线逆时针或顺时针 如何获得每个面的外法向量脸 这是凸多面体的一种方法 计算面法线和缠绕 https stackoverflow com questions 40454
  • 使用 Angular CLI 命令安装 Bootstrap 时如何解决依赖冲突?

    我尝试使用 CLI 命令在我的 Angular 应用程序中安装 Bootstrap ng 添加 ng bootstrap ng bootstrap 但我得到了以下错误回报 使用 Angular CLI 命令安装 Bootstrap 时如何解
  • NHibernate 中的延迟加载

    如果客户有很多订单 如何使用 NHibernate 延迟加载订单列表 是不是需要设置映射文件 任何帮助或例子都会很棒 克里斯的建议是我如何做到这一点 但是如果您想在运行时执行此操作 您可以根据您的标准将 Fetchmode 设置为惰性 如下
  • 忽略忽略属性

    我们有 MSTest 测试 它会在每小时的生产中自动运行 其中一项测试标有 Ignore 属性 因为它还没有准备好在我们的生产环境中运行它 现在我想 仅 在我的本地环境上启动该测试 因为我的本地环境已准备好进行该测试 我尝试通过单击测试代码
  • 将 select 的背景颜色设置为 JQuery 中选定的选项

    这个问题的后续 在 JQuery 中设置选择选项的背景颜色 https stackoverflow com questions 5065167 setting background color of select options in jq
  • FluentMigrator 失败的迁移不回滚?

    我刚刚开始尝试流利迁移器 http github com enkari fluentmigrator readme 我注意到失败的迁移不会被回滚 这还没有实施吗 这看起来相当糟糕 因为它使数据库处于损坏状态 例如 当第二次尝试添加 Tabl
  • 当窗口未最大化时缺少 WM_NCLBUTTONUP 消息的奇怪问题

    我有一个处理 WM NCLBUTTONUP 消息的窗口 以便处理标题栏中自定义按钮的点击 当窗口最大化时 这非常有效 但当窗口未最大化时 WM NCLBUTTONUP 消息永远不会到达 不过我确实收到了 WM NCLBUTTONDOWN 消
  • 对于连接到单个服务器的多个客户端,我应该使用哪种双向 ZeroMQ 模式?

    我有多个 数千个 客户端连接到单个服务器并发送一些日志数据 服务器分析数据并在必要时做出响应 PUB SUB是一个方向 监视器示例 REQ REP无法识别对等方并专门回复对等方 仅适用于 ACK 等 我需要注册这些客户端 识别他们并能够在分
  • Rails中防止重复记录的正确方法

    在我的模型中我有这个 validates name presence gt true uniqueness gt true 在我的控制器中我有 if location save format html redirect to locatio
  • Docker 通过命令或文件设置环境变量

    我需要设置一个环境变量CLASSPATH 在该变量中 我需要设置命令的结果 hadoop classpath glob 这将返回大量的 java 库 并且它们都需要设置到其中CLASSPATH多变的 最大的问题是我只能在 docker 构建