在docker中执行curl并将curl的值源代码化为环境文件

在docker中执行curl并将curl的值源代码化为环境文件,docker,curl,dockerfile,jhipster,Docker,Curl,Dockerfile,Jhipster,下面是我的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=3370755985

下面是我的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返回值success或fail。如果curl返回失败,那么我的应用程序不应该启动,如果curl返回成功,那么我的应用程序应该启动。在上面的代码中,curl不会在创建映像时执行并抛出错误。错误为/bin/sh-c curl退出,返回代码127

请让我知道我从哪里得到错误

问候
Satyanvesh

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

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

感谢您的响应,我的IP地址在操作系统上本地运行,而创建映像时,它无法卷曲在OSThanks上本地运行的URL以获得响应。创建容器后,在打开容器时,请忽略前面的注释它无法将/root/tmp_var中存储的值导出到“var”变量我想要CURL命令,导出到变量并检查在打开containerDockerfile时执行的条件是否旨在创建静态映像,它不适合于动态地确定某些东西。如果你想创建一个映像,在你可以访问URL时启动jar,最好有一个外壳作为入口点。我是docker的新手,你能帮助我如何添加这样的入口点吗谢谢你的回复,我的IP地址在本地操作系统上运行,在创建映像时,它无法卷曲在OSThanks上本地运行的URL以获得响应。创建容器后,在打开容器时,请忽略前面的注释它无法将/root/tmp_var中存储的值导出到“var”变量我想要CURL命令,导出到变量并检查在打开containerDockerfile时执行的条件是否旨在创建静态映像,它不适合于动态地确定某些东西。如果你想创建一个图像,在你可以访问URL时启动jar,最好有一个外壳作为入口点。我是docker的新手,你能帮我添加这样的入口点吗