gpt4 book ai didi

docker - 多次运行 Docker 镜像时传递不同的参数

转载 作者:行者123 更新时间:2023-12-01 13:40:51 24 4
gpt4 key购买 nike

我需要在运行 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 镜像,因此我需要将日志保存在/artifacts 中并酌情附加 _0、_1、_2、_3。

我尝试将它保存在 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 中修改什么才能执行我想要的操作?

最佳答案

只需将您的参数作为 ENV 注入(inject)即可。

声明一个 ENV in your Dockerfile .

ENV suffix 0
./maker oneapp > /artifacts/oneapp_${suffix}.log

The environment variables set using ENV will persist when a container is run from the resulting image.
You can view the values using docker inspect, and change them using docker run --env <key>=<value>.

这样,您就可以声明 ENV on docker run ,并从其在运行容器中的值(value)中获益。

the operator can set any environment variable in the container by using one or more -e flags, even overriding those mentioned above, or already defined by the developer with a Dockerfile ENV:

以你的情况为例:

docker run -e suffix=2 <image_name>

关于docker - 多次运行 Docker 镜像时传递不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com