如何从 Dockerfile 中的入口点发出超时命令

How do I make Timeout command from entrypoint in Dockerfile

我一直在尝试 运行 在我的 shellscript 上执行超时命令,时间作为变量通过 Dockerfile

传递

这是我的 DokcerFile(样本)

FROM locustio/locust:1.2.3

ARG TIME_CHECK=15

COPY --chown=locust:locust ping.sh .

RUN echo  "Hello $TIME_CHECK"

RUN chown locust:locust /home/locust && chmod +x ./ping.sh

ENTRYPOINT ["/bin/bash","-c", "timeout $TIME_CHECK ./ping.sh"]

Docker 使用以下命令成功构建,我可以正确传递值

docker build -t pingit --build-arg TIME_CHECK=10

当我执行 docker 运行 时失败并出现以下错误

尝试 'timeout --help' 了解更多信息。

我明白这是因为 ENTRYPOINT 没有识别变量本身。

我做错了什么,你能帮帮我吗?

docker reference 开始,您只能在构建时访问 ARG 个值。

要将值传递给运行时环境变量,可以使用ENV指令:

FROM locustio/locust:1.2.3

ARG TIME_CHECK=15

# assign ENV from ARG
ENV TIME_CHECK=${TIME_CHECK}

COPY --chown=locust:locust ping.sh .

RUN echo  "Hello $TIME_CHECK"

RUN chown locust:locust /home/locust && chmod +x ./ping.sh

ENTRYPOINT ["/bin/bash","-c", "timeout $TIME_CHECK ./ping.sh"]

只需在 ARG 语句后添加 ENV TIME_CHECK=$TIME_CHECK 到您的 dockerfile。

问题是 ARG 是在构建时。如果你需要将它用作环境变量那么你需要自己设置变量