我需要在运行Docker Image时给出一个参数,这将是一个0-3的数字。
Dockerfile具有以下内容:
WORKDIR "mydir/build"
CMD ./maker oneapp > /artifacts/oneapp_$1.log ; ./maker twoapp > /artifacts/twoapp_$1.log ; ./maker -j13 threeapp > /artifacts/threeapp_$1.log
我将多次运行相同的Docker Image,因此我需要将日志保存在附加了_0,_1,_2,_3的/ artifact中。
我尝试将其保存在Docker文件中但不想在运行docker时将此完整行作为参数传递。
ENTRYPOINT [" / bin / bash"]
./ maker oneapp> /artifacts/oneapp_$1.log; ./maker twoapp> /artifacts/twoapp_$1.log; ./maker -j13 threeapp> /artifacts/threeapp_$1.log
有可能这样做吗?我需要在Dockerfile中修改什么来做我想做的事情?
答案 0 :(得分:3)
只需将参数注入ENV。
ENV suffix 0
./maker oneapp > /artifacts/oneapp_${suffix}.log
从生成的图像运行容器时,使用
ENV
设置的环境变量将保持不变 您可以使用docker inspect
查看值,并使用docker run --env <key>=<value>
更改它们。
这样,您可以声明ENV
on docker run,并从正在运行的容器中的值中受益。
运算符可以使用一个或多个-e标志设置容器中的任何环境变量,甚至覆盖上面提到的那些,或者已经由开发人员用Dockerfile ENV定义:
在您的情况下,例如:
docker run -e suffix=2 <image_name>