我正在尝试配置docker文件,以便在脚本准备好后运行它。
基本上我希望我的微服务等到另一个服务可用。我正在阅读一本书中的教程,所以我有这个dockerfile:
FROM openjdk:8-jdk-alpine
RUN apk update && apk upgrade && apk add netcat-openbsd
ARG JAR_FILE
ADD target/${JAR_FILE} /usr/share/theexplorer/theexplorer.jar
ADD run.sh run.sh
RUN chmod +x run.sh
CMD ./run.sh
EXPOSE 8761
我有这个脚本(run.sh):
echo "********************************************************"
echo "Waiting for the configuration server to start on port $CONFIGSERVER_PORT"
echo "********************************************************"
while ! `nc -z configserver $CONFIGSERVER_PORT `; do sleep 3; done
echo ">>>>>>>>>>>> Configuration Server has started"
java -jar /usr/share/theexplorer/theexplorer.jar
但$ CONFIGSERVER_PORT的值为null。我不知道这个变量应该如何可用,因为我在调用run.sh时没有传递任何参数。那么,我该如何设置$ CONFIGSERVER_PORT?有没有聪明的方法来了解我的服务所依赖的服务的端口?
任何帮助表示赞赏!
答案 0 :(得分:3)
docker run -itd -p 5555:8761 myimage/myimage
将主机端口5555映射到容器端口8761.对于"其他"它的工作方式相同。您将等待的服务,所以此时您不依赖于动态主机端口映射。这就是您了解每项服务的端口的方法。
在这种情况下,您可以在localhost:5555上访问正在运行的服务容器。