热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在docker容器中的文件中设置dockerfile中的系统范围的环境变量?

如何解决《如何在docker容器中的文件中设置dockerfile中的系统范围的环境变量?》经验,为你挑选了1个好方法。

我正在设置一个交叉编译环境作为docker容器.在构建过程中,我为嵌入式设备安装了一个SDK:

ADD sdk.tar /opt
WORKDIR /opt/
RUN sdkinstall.sh

它将sdk安装在一个文件夹中 /opt/sdk/

现在我有一个/opt/sdk/envsetup包含一些环境变量的文件:

export SDKTARGETSYSROOT=/opt/sdk/sysroots/cortexa9hf-vfp-neon-gad-linux-gnueabi
export PATH=/opt/sdk/sysroots/x86_64-gadsdk-linux/usr/bin:/opt/sdk/sysroots/x86_64-gadsdk-linux/usr/bin/arm-gad-linux-gnueabi:$PATH
export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT

.... and so on

通常,当我在容器中运行shell时,我会这样做source /opt/sdk/envsetup,然后从shell编译东西.

但是,我想要实现的是所有这些环境变量都存在于docker容器内的系统范围内,并且当我例如做类似的事情时会考虑到这些变量. docker run -it xyz:latest make

我通过调用测试这个docker run -it xyz:latest echo $SDKTARGETSYSROOT,我期待容器打印/ opt/sdk/sysroots/cortexa9hf-vfp-neon-gad-linux-gnueabi`

到目前为止,我试图实现这一目标:

将变量添加到/ etc/environment: RUN cat /opt/sdk/environment-setup-cortexa9hf-vfp-neon-gad-linux-gnueabi | cut -d" " -f 2 >> /etc/environment

将变量添加到/ etc/profile,/ root/.profile和/root/.bashrc: RUN echo -e "# Auto source some variables\nsource /opt/sdk/environment-setup-cortexa9hf-vfp-neon-gad-linux-gnueabi" >> [...]

在dockerfile中手动添加一个var ENV SDKTARGETSYSROOT /opt/sdk/sysroots/cortexa9hf-vfp-neon-gad-linux-gnueabi,只是为了测试行为

./bin/bash -c 'source'文件/opt/sdk/envsetup

这些都没有导致我的预期结果.如何才能正确设置这些变量?

由于包含变量的文件在开头是未知的docker build并且在容器内部的sdk安装期间创建,我真的不喜欢通过ENV手动将其内容添加到dockerfile中的想法,即使这有效,没有.



1> larsks..:

运行此命令时:

docker run -it xyz:latest echo $SDKTARGETSYSROOT

$SDKTARGETSYSROOT由你扩大当地壳.在任何情况下,您实际上都没有测试容器内的环境变量.这可行:

docker run -it xyz:latest sh -c 'echo $SDKTARGETSYSROOT'

单引号禁止本地shell中的变量扩展,我们需要显式调用,sh -c ...因为默认情况下Docker不使用shell执行命令.相比:

$ docker run -it alpine echo $HOME
/home/lars

附:

$ docker run -it alpine echo '$HOME'
$HOME

附:

$ docker run -it alpine sh -c 'echo $HOME'
/root

否则,您的几种方法看起来像是一种合理的方式来做您想做的事情.


推荐阅读
author-avatar
手机用户2502905381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有