我正在开展一项任务,涉及使用Dockerfile构建一个以centOs为基础的docker镜像.dockerfile中的一个步骤需要设置http_proxy和https_proxy ENV变量才能在代理后面工作.
由于这个Dockerfile将由具有不同代理的多个团队使用,我想避免为每个团队编辑Dockerfile.相反,我正在寻找一个允许我在构建时传递ENV变量的解决方案,例如,
sudo docker build -e http_proxy = somevalue.
我不确定是否已有提供此功能的选项.我错过了什么吗?
我有一个Dockerfile应该建立一个Ubuntu图像.但是当我跑步的时候
docker build -t ubuntu-test:latest ./Dockerfile
Run Code Online (Sandbox Code Playgroud)
它在控制台上显示以下错误
无法准备上下文:context必须是一个目录:/ Users/tempUser/git/docker/Dockerfile
我在Mac OsX上.我也试过了sudo.什么都行不通.
GitLab CI 允许向项目添加自定义变量。
它允许使用类型的秘密变量,file其中我指定了一个作为变量名称的密钥和作为文件内容的值(例如证书的内容)
然后在管道执行期间,内容将保存为临时文件,调用变量名称将返回创建文件的路径。
最终,我需要将此文件复制到构建项目时创建的 Docker 容器中。(docker build ...在yml中)
当如果变量作品测试,我想echo $VARIABLE在.gitlab-ci.yml和它的作品,临时文件的路径返回。但是在RUN echo $VARIABLEin 中执行时Dockerfile,它是空的。因此我也不能使用ADD $VARIABLE /tmp/这是我的目标。
有没有办法解决这个问题并使这个文件可供Dockerfile? 我是 Docker 和 GitLab 的新手,不知道还能去哪里找。
如何将主机环境变量(如用户名和主机名)传递给dockerfile?
例如,如果我的用户名是taha:
echo $USER
taha
Run Code Online (Sandbox Code Playgroud)
如何编写Docker文件以获得相同的输出?
FROM centos:centos7
ARG myuser=$USER
CMD echo $myuser
Run Code Online (Sandbox Code Playgroud) 我在docker repo自动构建上添加了一些环境设置,可以说, WEBSERVER_PRIVATE_KEY=123
在我的Dockerfile中,当我在本地构建时,我认为它将获取env值
RUN echo $WEBSERVER_PRIVATE_KEY > /somewhere/key
Run Code Online (Sandbox Code Playgroud)
但这没有用。
我看了一下ENV命令,但似乎没有办法注入该值。
我看了一下ARG命令,但是它需要传递,--build-arg因为我怀疑它是否可以在基于docker repo的构建过程中工作。
在自动构建期间,请参阅以下docker repo上的环境设置,如何使Dockerfile引用WEBSERVER_PRIVATE_KEY设置中的。