【发布时间】:2019-08-05 08:18:44
【问题描述】:
我有 docker 文件:
FROM anapsix/alpine-java:8_server-jre
RUN apk add --no-cache curl
COPY build/libs/codes-converter-1.0-SNAPSHOT.jar /tmp
COPY mappings.yaml /
ADD load.sh /
RUN chmod +x /load.sh
CMD ["/load.sh"]
加载.sh:
#!/bin/bash
exec java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n -jar tmp/codes-converter-1.0-SNAPSHOT.jar
sleep 10
curl http://localhost:8090/codes-converter/load-mappings
所以基本上,我需要在容器启动后连接到容器内我的 java 应用程序的一个端点。但我不知道该怎么做。我的错误在哪里?这个 curl 命令似乎不起作用。
【问题讨论】:
-
你卡在
exec java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n -jar tmp/codes-converter-1.0-SNAPSHOT.jar,你需要在命令末尾添加& -
exec用给定命令替换当前 shell。只需使用:java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n -jar tmp/codes-converter-1.0-SNAPSHOT.jar & -
即使删除 exec 并将其放到后台我猜也无济于事,容器需要此命令
java xxx在前台运行以避免它退出。您需要将curl与不在此容器中的其他部分分开,考虑修改您的设计。
标签: bash docker ubuntu dockerfile