gpt4 book ai didi

docker - 执行curl并将curl的值提供给docker中的环境文件

转载 作者:行者123 更新时间:2023-12-02 21:13:54 25 4
gpt4 key购买 nike

以下是我的docker文件的内容

FROM openjdk:8-jre-alpine
ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
JHIPSTER_SLEEP=20

# add directly the war
ADD *.war /app.war

VOLUME /tmp
EXPOSE 8081 5701/udp
RUN curl http://xxx.xxx.xxx.xxx:xxxx/api/startup?lic_key=337075598591269d15xxxxxxxx23fds > /root/tmp_var
RUN export var=$(cat /root/tmp_var)
ENV status="${var}"
CMD if [ "${status}" = "fail" ] ; then exit 1 ; else CMD echo "The application will start in ${JHIPSTER_SLEEP}s...${var} .... ${status}" && sleep ${JHIPSTER_SLEEP} && java -Djava.security.egd=file:/dev/./urandom -jar /app.war ; fi

在上面的代码中curl会返回成功或失败的值。如果curl返回失败,则我的应用程序不应启动,如果curl返回成功,则我的应用程序应该启动。在上面的代码中,curl没有被执行,并且在创建图像时抛出了错误。错误是 / bin / sh -c curl退出,返回了代码127

请让我知道我哪里出错了

问候
萨蒂扬韦什

最佳答案

openjdk:8-jre-alpine的镜像不包含curl命令。
您需要先安装它,然后再运行。

RUN apk update && apk --no-cache add curl
RUN curl http://xxx.xxx

附加说明。这是我在评论中谈到的内容。
这是一个示例,我尚未确认它是否可以实际执行。

准备一个名为 entrypoins.sh的 shell 程序脚本作为入口点。
curl  http://xxx.xxx.xxx.xxx > /root/tmp_var
export var=$(cat /root/tmp_var)
status="${var}"
if [ "${status}" = "fail" ] ; then
exit 1
else
echo "The application will start in ${JHIPSTER_SLEEP}s...${var} .... ${status}"
sleep ${JHIPSTER_SLEEP}
java -Djava.security.egd=file:/dev/./urandom -jar /app.war
fi

然后通过将其包含在Dockerfile中进行调用。
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
CMD /entrypoint.sh

关于docker - 执行curl并将curl的值提供给docker中的环境文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489097/

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