如何从 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
是在构建时。如果你需要将它用作环境变量那么你需要自己设置变量
我一直在尝试 运行 在我的 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
是在构建时。如果你需要将它用作环境变量那么你需要自己设置变量