gpt4 book ai didi

spring-boot - 无法使用外部 ip 连接到 Container-optimized-os(使用 docker 运行 spring-boot 应用程序)

转载 作者:行者123 更新时间:2023-12-02 20:44:15 25 4
gpt4 key购买 nike

我创建了一个带有 Container-optimized-OS 镜像的 Google 计算实例。

我已将防火墙配置为允许 http 和 https。

我正在将 docker 镜像与连接到 cloudsql 的 Spring Boot 应用程序一起使用。当我在计算引擎实例 ssh 上使用运行命令时,即(docker run --rm name),spring boot 应用程序启动成功。

当我尝试通过计算引擎实异常(exception)部 ip 访问 web 服务时,它不起作用。

我经历了一个不同的问题,发现我应该尝试使用 sudo wget http://localhost首先在实例 cli 上执行命令,如果它很好,那么一切都应该很好。但我在 127.0.0.1:80 收到拒绝连接消息。

我还尝试了从容器优化操作系统 I.E 打开端口的命令。
sudo iptables -w -A INPUT -p tcp --dport 80 -j ACCEPT ,没有任何效果。

最佳答案

Spring Boot 的默认端口是 8080 而不是 80。

在实例容器中运行此命令以查看哪些端口处于 LISTENING 状态:

sudo netstat -tulpn | grep LISTEN

您可以使用以下命令将端口 80 重定向到端口 8080:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

注意:这个 iptables命令仅将网络接口(interface)上的端口 80 重定向到 8080。这对 localhost 无效或 127.0.0.1 .

对于 Google Compute Engine 实例,您不需要使用 iptables 启用端口.这是通过 Google VPC 防火墙规则完成的。您可以同时使用这两种方法,但请确保您准确了解您正在配置的内容和副作用。

注意:您的 Spring Boot 应用程序需要监听 0.0.0.0而不是 127.0.0.1也不是 localhost .最后两个是内部地址。 0.0.0.0表示监听所有网络接口(interface)。

注意:请勿使用 sudowget 前面.这不是必需的。

关于spring-boot - 无法使用外部 ip 连接到 Container-optimized-os(使用 docker 运行 spring-boot 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57981251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com