我已经用容器优化的操作系统映像创建了一个Google compute实例。
我已将防火墙配置为允许超文本传输协议和https。
我将docker镜像与连接到cloudsql的spring boot应用程序一起使用。当我在计算引擎实例ssh上使用run命令时,即(docker run--rm name),spring boot应用程序成功启动。
当我尝试通过计算引擎实例外部ip访问Web服务时,它不起作用。
我检查了一个不同的问题,发现我应该先在实例cli上尝试使用sudo wgethttp://localhost命令,如果它很好,那么一切都应该很好。但是我在127.0.0.1:80收到连接拒绝消息。
我还尝试了从容器优化操作系统打开端口的命令,即sudo iptables-w-A INPUT-p TCP-dport 80-j ACCEPT,但没有任何效果。
在你的帮助下,我能够建立正确的解决方案(John Hanley和Cyac)。我将两种解决方案结合起来,以帮助下一个面对这个问题的人。
正如 John 所说,默认情况下,Spring boot 使用端口 8080,而不是 80,并且按照 Cyac 的指定,您需要在 application.properties 文件中显式指定端口为 80,使用
server.port=80
sudo iptables -w -A INPUT -p tcp --dport 80 -j ACCEPT
使用以下命令运行 Docker:
docker run -p 80:80 SPRING_IMAGE.
其中SPRING_IMAGE是带有spring boot build的docker映像的名称。
使用curl http://localhost/ENDPOINT _ NAME进行测试,例如http://localhost/shops/all
首先,确认您的 Springboot 应用程序使用的端口 - 如果是 8080 还是 80。这取决于您在 application.properties 文件中配置的内容。此端口在以下步骤中称为 ContainerPort。
docker运行
除非您的Spring启动应用程序存在应用程序问题,否则这些步骤应该会让您继续前进。
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
注意:此< code>iptables命令仅将网络接口上的端口80重定向到8080。这对< code>localhost或< code>127.0.0.1没有影响。
对于Google Compute Engine实例,您不需要使用iptables
启用端口。这是通过Google VPC防火墙规则完成的。您可以同时使用两者,但请确保您准确了解您正在配置的内容和副作用。
注意:您的Spring Boot应用程序需要监听0.0.0
,而不是127.0.1
或localhost
。最后两个是仅内部地址0.0.0.
表示监听所有网络接口。
注意:不要在wget
前面使用sudo
。这是不必要的。
我有一个react-app,它简单地显示hello-world消息,但我喜欢运行应用程序通过docker-container,但有这个问题。在此消息之后,进程停止,没有运行应用程序。 我不能理解我应该做什么,因为我有一个很小的应用程序,在Dockerfile中有基本代码 我需要安装webpack-dev-server吗,我尝试了,但得到了版本错误,如“手动添加服务器”的版本比已经安装的服务器低。所
无法使用maven运行spring启动应用程序。当我运行命令mvn spring boot:run时,我收到:,但在pom中。我写的xml,其中是使用该示例的主要类: 我有这个项目结构: 我希望使用spring boot和maven运行我的应用程序。但现在它不起作用了。
我创建了一个SpringBoot的示例项目,以了解外部客户机功能,运行时会出现以下错误。 com.example.demo.RestClient中的字段Remote teCallClient需要一个类型为com.example.demo.Remote teCallClient的bean,但找不到。操作:考虑在配置中定义类型为com.example.demo.远程呼叫客户端的bean。 我尝试了各种
我需要某种方式来启动我的Java应用程序,而不强制用户手动运行应用程序。我不完全确定我将如何做到这一点,有人能提供任何帮助吗?
并运行相同的命令,它可以工作。 我如何才能从容器外部登录到MySQL服务器而不会得到任何错误?
我已经运行了MYSQL容器,我能够执行它,并且能够使用“MYSQL-h 172.17.0.2-u root-p”从主机连接。我已经执行“docker run--name=mysql-host-e mysql_root_password=root-d mysql:5.7.32”来运行docker映像。 但是,当我试图通过spring boot应用程序访问时,它会拒绝以下应用程序中的属性。proper