23
A
回答
6
我有同样的问题,找到办法通过dockerfile使用运行命令来设置环境变量的函数的结果。
例如,我需要在不改变为将设置SECRET_KEY_BASE为Rails应用程序只有一次,当我运行:
docker run -e SECRET_KEY_BASE="$(openssl rand -hex 64)"
相反,我写信给Dockerfile字符串,如:
RUN bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" >> /etc/bash.bashrc'
和我的ENV即使在bash登录后,它也可以从root获得。 或可能
RUN /bin/bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" > /etc/profile.d/docker_init.sh'
那么变量可以在CMD和入口点命令
泊坞高速缓存作为层且仅当您之前改变一些字符串改变。
您也可以尝试different ways来设置环境变量。
4
作为DarkSideF答案的补充。
您应该知道,Dockerfile中的每一行/命令都在另一个容器中运行。
你可以做这样的事情:
RUN export bleah=$(hostname -f);echo $bleah;
这是在一个容器中运行。
0
此时,命令结果可以与RUN export
一起使用,但不能分配给ENV
变量。
相关问题
- 1. Dockerfile RUN命令结果
- 2. 批处理脚本未能将设置变量设置为命令结果
- 3. 数字值不能设置为env使用Dockerfile#27284
- 4. 如何在Dockerfile中结合ENV语句?
- 5. Dockerfile和dpkg命令
- 6. 如何将一个变量设置为tkinter Button的命令函数的结果?
- 7. 将变量设置为命令的值
- 8. Dockerfile中的交互命令
- 9. Dockerfile中的命令数
- 10. 从Ruby中设置Windows命令中的本地ENV变量
- 11. 添加.ENV vairables为给定的命令
- 12. 根据主机名在Dockerfile中有条件地设置ENV var
- 13. Dockerfile:为什么bash命令不工作?
- 14. 什么值将被设置为结构元素命令?
- 15. Dockerfile重写ENV变量
- 16. Conda仅为env设置LD_LIBRARY_PATH
- 17. 将命令的结果传递给SED
- 18. 将grep命令的结果分组
- 19. 使用Ansible命令行设置ENV变量
- 20. ajax将结果设置为变量
- 21. Jena将结果设置为字符串
- 22. 将查询结果设置为变量
- 23. 将jtextfield设置为数据库结果
- 24. 设置命令执行的超时时间并将结果输出到文件
- 25. 如何在Dockerfile中将任意命令编码为exec形式?
- 26. Dockerfile自定义命令/指令
- 27. 什么是env命令呢?
- 28. 使用命令的结果
- 29. oracle命令的结果
- 30. linux'ls -lisa'命令的结果
见https://stackoverflow.com/questions/33201271/parse-a-variable-with-the-result-of-a-command-in-dockerfile – akhmed