首页 > 解决方案 > 将 Dockerfile 中的 bash 输出保存为 ENV var

问题描述

我正在设置一个随机密码,用于在我的Dockerfile. 我努力了

ENV PASSWORD=RUN date +%s | sha256sum | base64 | head -c 32

这不起作用,因为 Docker 命令位于单独的容器中。我也试过

RUN export PASSWORD= date +%s | sha256sum | base64 | head -c 32

这也失败了。

我还尝试将我的输出重定向到一个文件,该文件也失败了,该文件保持为空并且没有给出错误。

RUN date +%s | sha256sum | base64 | head -c 32 > test.txt

如何将此命令的输出保存为要在 Docker 容器中使用的 ENV var?

标签: bashdockerdockerfile

解决方案


以下 Dockerfile:

FROM alpine:latest
RUN echo "bd" > /test.txt

当运行test.txt文件存在时:

docker build . -t test:latest
docker run -it --rm test:latest
> cat /test.txt
> 'bd'

你可以改变你的命令以一种source能干的方式写一个文件(RUN echo "my_env_var=$(echo 'stuff')" > /test.txt)然后让你的入口点包括. /test.txt


推荐阅读