执行 curl 并将 curl 的值获取到 docker 中的环境文件
Execute curl and source the value of curl to environment file in docker
以下是我的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 returns 值成功或失败。如果 curl returns 失败,那么我的应用程序不应该启动,如果 curl returns 成功,那么我的应用程序应该启动。在上面的代码中,curl 在创建图像时没有被执行并抛出错误。错误是 /bin/sh -c curl exited with returned code 127
请告诉我哪里出错了
问候
萨蒂扬维什
openjdk:8-jre-alpine 的映像不包含 curl 命令。
您需要在 运行.
之前安装它
RUN apk update && apk --no-cache add curl
RUN curl http://xxx.xxx
补充notes.It是我在评论里说的内容。
这是一个例子,我还没有确认是否真的可以执行。
准备一个名为 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文件
的内容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 returns 值成功或失败。如果 curl returns 失败,那么我的应用程序不应该启动,如果 curl returns 成功,那么我的应用程序应该启动。在上面的代码中,curl 在创建图像时没有被执行并抛出错误。错误是 /bin/sh -c curl exited with returned code 127
请告诉我哪里出错了
问候 萨蒂扬维什
openjdk:8-jre-alpine 的映像不包含 curl 命令。 您需要在 运行.
之前安装它RUN apk update && apk --no-cache add curl
RUN curl http://xxx.xxx
补充notes.It是我在评论里说的内容。 这是一个例子,我还没有确认是否真的可以执行。
准备一个名为 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