如何访问在Docker容器中运行的Spring应用程序?
我有以下用于docker文件的文件…
FROM openjdk:11-jdk-slimVOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Dexternal.config.active='false'","-jar","/app.jar"]
和弹簧配置…
docker { springBootApplication {
baseImage = 'openjdk:11-jdk-slim'
ports = [9090, 8080]
tag = 'app:0.2'
}
}
一切似乎都开始文件,我明白了
Started Application in 8.743 seconds (JVM running for 9.153)
我看到…
f46b4cbfa799 646eced45077 "java -jar /app/simp…" 15 minutes ago Up 15 minutes 8080/tcp, 9090/tcp mystifying_kirch
但是当我运行docker inspect <imageId> | grep
"IPAddress"并在这样的浏览器中输入该地址时,http://<IP>:8080
出现超时错误。我知道我可以在运行时使用端口映射,但是有没有一种方法可以映射到我的本地主机呢?
我也尝试过这个…
curl 172.17.0.2:8080curl: (7) Failed to connect to 172.17.0.2 port 8080: Operation timed out
因此它不是浏览器。
还试图像这样映射它…
0.0.0.0:8080->8080/tcp、9090/tcp
但是localhost:8080(或IP地址)发送空响应“未发送任何数据”。
回答:
在对Web服务(此处为Java Spring
Boot应用程序)进行泊坞服务时发生的典型问题是,localhost
不应使用该地址并将其替换为0.0.0.0
。
有关更多详细信息,请参见此SO答案,该答案]很好地解释localhost
了Docker上下文中的代表。
关于0.0.0.0
地址,此特殊IP在这里仅表示“任何IPv4地址”。
最终,正如OP在评论中确认的那样,对于SpringBoot而言,只需server.address
在application.properties
文件中分配属性即可实现此目的(参见文档)。
以上是 如何访问在Docker容器中运行的Spring应用程序? 的全部内容, 来源链接: utcz.com/qa/422047.html