docker - 无法在 Dockerfile 中使用 EXPOSE 公开端口
问题描述
我正在尝试公开一个 JMX 端口以从 minikube 监视 SpringBoot 应用程序。所以我在 Dockerfile 中添加了 EXPOSE 9010 并在 deployment.yaml 中添加
- containerPort: 9010
- name: JAVA_OPTS
value: "-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.port=9010 \
-Dcom.sun.management.jmxremote.rmi.port=9010 \
-Djava.rmi.server.hostname=127.0.0.1"
但是,该端口并未暴露。我在这里错过了什么吗?
尝试端口转发时出现以下错误
Handling connection for 9010
E0223 11:48:52.999502 17966 portforward.go:400] an error occurred forwarding 9010 -> 9010: error forwarding port 9010 to pod 4dc803f4d28b82b98dbc0e8fc1448d760f98694e026fb74511b2b8957aa88ef3, uid : exit status 1: 2021/02/23 06:18:52 socat[16604] E connect(5, AF=2 127.0.0.1:9010, 16): Connection refused
Dockerfile:
FROM openjdk:11
WORKDIR /
ADD target/usgagg-service-0.0.1-SNAPSHOT.jar //
EXPOSE 9010
ENTRYPOINT ["java","-Dspring.profiles.active=local","-jar","usgagg-service-0.0.1-SNAPSHOT.jar"]
注意:Springboot server.port 是 8080,我试图创建任何服务来公开 8080 端口,我刚刚在 deployment.yaml 中添加了容器端口,它工作正常。我只有 9010 有问题
更新:通过将 Dockerfile 中的 ENTRYPOINT 修改为以下来解决问题。
ENTRYPOINT exec java $JAVA_OPTS -Dspring.profiles.active=local -jar /usgagg-service-0.0.1-SNAPSHOT.jar
解决方案
推荐阅读
- python - 一个简单的矩阵乘法会引发错误“形状 (2,3) 和 (2,3) 未对齐:3 (dim 1) != 2 (dim 0)”?
- java - 需要帮助将 OAuth2 安全性添加到 Spring Boot 微服务
- sql - 我如何知道我的 ADO 管道正在使用哪个用户?
- python - Python上两个数字的最大公共除法器
- jquery - 如何使用 jQuery DataTables 传递参数并重绘表格
- android - Android服务不会停止?
- excel - 如何在执行宏时让 excel 显示等待消息?
- facebook-javascript-sdk - 连接到 Leadgen 的 webhook 回调 url 时出现 405
- python - python flask : 如何在表中添加可点击的列,并在操作后记录到数据库中
- c# - 如果 LINQ 中有两个参数,GroupBy 会做什么?