首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >作为命令的结果在Dockerfile中分配环境变量

作为命令的结果在Dockerfile中分配环境变量
EN

Stack Overflow用户
提问于 2020-03-30 15:12:55
回答 1查看 219关注 0票数 0

我正在尝试将powershell命令的结果赋值给MY_VAR环境变量。我已经尝试了几种方法,但我无法让变量获取操作的值。如果我将变量赋值如下,我得到的值就是字面上的命令。

代码语言:javascript
运行
复制
ARG MY_ARG="VALUE"

ENV MY_VAR=[Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG))

ENV MY_VAR2=$([Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG)))

当我将这些值签入到容器中时,我得到的结果是:

代码语言:javascript
运行
复制
Get-Childitem -Path Env:MY_VAR*

Name                           Value                                                                                                                                              
----                           -----                                                                                                                                              
MY_VAR                         [Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes(VALUE))  
MY_VAR2                        $([Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes(VALUE)))

我的容器的基础是Windows Server Core,我的shell是powershell。

EN

回答 1

Stack Overflow用户

发布于 2020-03-30 17:41:59

参见this SO post,它包含了几个可以实现您想要的解决方案。

ENV将value视为简单的文本字符串。

更新:

根据answers and comments here的说法

1)向您显示环境配置文件位置的RUN $profile。更熟悉这个文件。

2)尝试使用RUN $env.MY_VAR = [Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes($MY_ARG)) >> $profile或其他方式将命令追加到文件中。我对powershell不够熟悉,因此请注意,您可能需要稍微修改一下该命令。(使用正确的命令进行注释,我将为下一位查看者修复它。)

3)尝试读取容器中的MY_VAR。如果一切都是正确的,那么Hoooray!,否则请在$profile中检查您是否实际获得了设置变量的正确字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60925654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档