使用“-e”运行时需要为图像提供环境变量

Nil*_*dré 6 environment-variables docker dockerfile

我有一个容器映像,需要设置环境变量才能运行。但如果使用 运行-d,除非容器受到监视,否则运行容器的人不会注意到缺少某些内容。有没有一种方法可以docker [container] run在启动容器之前检查环境变量是否已提供给容器。

Adi*_*iii 3

在分离模式下,无法在运行时打印需要 env 的消息-d,但您可以尝试解决方法:

Dockerfile

FROM alpine
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)

入口点.sh

#!/bin/sh
echo "starting container $hostname"
if [ -z "$REQUIRED_ENV" ]; then
  echo "Container failed to start, pls pass -e REQUIRED_ENV=sometest"
  exit 1
fi
echo "starting container with $REQUIRED_ENV"
#your long-running command from CMD
exec "$@"
Run Code Online (Sandbox Code Playgroud)

所以当你跑步时

docker run -it --name envtest  --rm env-test-image 
Run Code Online (Sandbox Code Playgroud)

它将退出并显示消息

starting container 
Container failed to start, pls pass -e REQUIRED_ENV=sometest

Run Code Online (Sandbox Code Playgroud)

分离模式的解决方法

docker run -it --name envtest  -d --rm env-test-image && docker logs envtest
Run Code Online (Sandbox Code Playgroud)