首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过停靠容器中的-e标志传递的环境变量在入口点脚本中无法访问

通过停靠容器中的-e标志传递的环境变量在入口点脚本中无法访问
EN

Stack Overflow用户
提问于 2018-05-23 22:02:04
回答 1查看 1K关注 0票数 1

我正在尝试通过docker run命令运行docker容器。我通过-e标志指定了一个环境变量。奇怪的是,如果我在容器中执行/bin/bash,则可以读取该环境变量,但不能在Dockerfile中定义的入口点脚本中读取。

我的docker容器使用debian:9作为基础,而入口点脚本是一个简单的bash脚本,它记录一些数据和环境变量。

Dockerfile:

代码语言:javascript
复制
FROM debian:9
RUN apt-get update && apt-get install -y curl sudo supervisor wget
ADD starter-service.sh .
RUN chmod 755 starter-service.sh
ENTRYPOINT ["sudo", "/bin/bash", "-c", "./starter-service.sh"]

starter-service:

代码语言:javascript
复制
#! /bin/bash
license=$LICENSE_KEY
if [ "$license" == "" ]
then
  echo "No License Key: "$LICENSE_KEY" arg:"$arg > /tmp/my-service.log
  printenv >> /tmp/my-service.log
fi
sleep 1000s

有问题的环境变量是LICENSE_KEY。Docker运行命令:

docker run -e LICENSE_KEY=123 <docker image>

EN

回答 1

Stack Overflow用户

发布于 2018-05-24 00:31:05

您已经在入口点中使用了sudo。要保留环境变量,需要使用-E, --preserve-env选项。在dockerfile中,将入口点更新为以下内容应该可以:

代码语言:javascript
复制
ENTRYPOINT ["sudo", "-E", "/bin/bash", "-c", "./starter-service.sh"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50490402

复制
相关文章

相似问题

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