如何在Docker中侦听端口?

我试图configuration一个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的值为空。 我不知道这个variables应该如何可用,因为我没有在调用run.sh时传递任何参数。 那么, 我应该如何设置$ CONFIGSERVER_PORT? 有没有什么聪明的方法来了解我的服务所依赖的服务的端口?

任何帮助表示赞赏!

docker run -itd -p 5555:8761 myimage/myimage将主机端口5555映射到容器端口8761.对于您将要等待的“其他”服务,其工作方式相同,因此此时不依赖dynamic主机端口映射。 这是你如何知道你的每个服务的端口。

在这种情况下,您正在运行的服务容器将在localhost:5555上可达。