Lea*_*ira 1 linux shell docker devops
我正在尝试配置一个 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 Code Online (Sandbox Code Playgroud)
我有这个脚本(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
Run Code Online (Sandbox Code Playgroud)
但 $CONFIGSERVER_PORT 的值为空。我不知道这个变量应该如何可用,因为我在调用 run.sh 时没有传递任何参数。那么,我应该如何设置$CONFIGSERVER_PORT?有没有什么聪明的方法可以知道我的服务所依赖的服务的端口?
任何帮助表示赞赏!
docker run -itd -p 5555:8761 myimage/myimage
将主机端口 5555 映射到容器端口 8761。它对于您正在等待的“其他”服务的工作原理相同,因此此时您不依赖于动态主机端口映射。这样您就可以知道每个服务的端口。
在这种情况下,您正在运行的服务容器可以在 localhost:5555 上访问。
归档时间: |
|
查看次数: |
7409 次 |
最近记录: |