我需要用命令的结果填充 dockerfile 中的变量
就像在 bash 中 var=$(date)
编辑 1
日期就是一个例子。在我的情况下,我使用FROM phusion/baseimage:0.9.17所以我想在每个建筑物使用最后一个版本,所以我使用这个
curl -v --silent api.github.com/repos/phusion/baseimage-docker/tags 2>&1 | grep -oh 'rel-.*",' | head -1 | sed 's/",//' | sed 's/rel-//'==> 0.9.17。但我不知道我如何用 dockerfile 在 var 中解析它以获得这个结果
ENV verbaseimage=curl...
FROM phusion/baseimage:$verbaseimage
Run Code Online (Sandbox Code Playgroud)
结果
在我的用例中
FROM phusion/baseimage:latest
Run Code Online (Sandbox Code Playgroud)
但是对于其他情况,这个问题仍未解决
小智 4
我遇到了同样的问题,并找到了通过在 dockerfile 中使用 RUN 命令来设置环境变量作为功能结果的方法。
例如,我需要为 Rails 应用程序设置一次 SECRET_KEY_BASE ,而无需像运行时那样进行更改:
docker run -e SECRET_KEY_BASE="$(openssl rand -hex 64)"
Run Code Online (Sandbox Code Playgroud)
相反,我将其写入 Dockerfile 字符串,例如:
RUN bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" >> /etc/bash.bashrc'
Run Code Online (Sandbox Code Playgroud)
即使在 bash 登录后,我的 env 变量也可以从 root 获取。或者可能
RUN /bin/bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" > /etc/profile.d/docker_init.sh'
Run Code Online (Sandbox Code Playgroud)
那么它可以在 CMD 和 ENTRYPOINT 命令中使用
Docker 将其缓存为层,并且仅当您更改其之前的一些字符串时才会更改。
您还可以尝试不同的方法来设置环境变量。
| 归档时间: |
|
| 查看次数: |
6243 次 |
| 最近记录: |