我正在尝试通过docker run命令运行docker容器。我通过-e标志指定了一个环境变量。奇怪的是,如果我在容器中执行/bin/bash,则可以读取该环境变量,但不能在Dockerfile中定义的入口点脚本中读取。
我的docker容器使用debian:9作为基础,而入口点脚本是一个简单的bash脚本,它记录一些数据和环境变量。
Dockerfile:
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:
#! /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>
发布于 2018-05-24 00:31:05
您已经在入口点中使用了sudo。要保留环境变量,需要使用-E, --preserve-env选项。在dockerfile中,将入口点更新为以下内容应该可以:
ENTRYPOINT ["sudo", "-E", "/bin/bash", "-c", "./starter-service.sh"]https://stackoverflow.com/questions/50490402
复制相似问题