问题描述
我目前正在EC2的docker容器中运行spring boot应用程序。我的docker-compose文件如下所示(替换了一些值):
version: '3.8'
services:
my-app:
image: ${ecr-repo}/my-app:0.0.1-SNAPSHOT
ports:
- "8893:8839/tcp"
networks:
default:
docker容器已部署并运行状况良好,运行状况检查命令为:
wget --spider -q -Y off http://localhost:8893/my-app/v1/actuator/health
如果我使用docker ps -a,则可以看到端口:
0.0.0.0:8893->8893
我的Alb健康检查返回了502,所以我暂时允许了从我的IP直接连接到安全组中的EC2。规则是:
Allow Ingress on 8893 from my Alb security group
Allow Ingress on 8893 from my IP
Allow Egress to anywhere (0.0.0.0)
当我尝试使用邮递员在端口8893上使用ec2的公共DNS到达应用程序的运行状况检查端点时,出现错误:连接ECONNREFUSED
如果我放下Docker容器,然后使用https://fabianlee.org/2016/09/26/ubuntu-simulating-a-web-server-using-netcat/中的命令模拟Web服务器,则该命令是:
while true; do { echo -e "HTTP/1.1 200 OK\r\n$(date)\r\n\r\n<h1>hello world from $(hostname) on $(date)</h1>" | nc -vl 8080; } done
我收到一个200的预期响应,表示这不是安全组的问题。
肯定启用了弹簧启动的执行器端点,就像我尝试通过intellij运行该应用程序并单击该端点时,它返回200并处于向上状态。
关于我在这里可能缺少的或如何进一步调试它的任何建议?似乎Docker由于某种原因未选择与端口的连接。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)