gpt4 book ai didi

spring-boot - 无法连接到本地运行在Docker上的Spring Boot应用

转载 作者:行者123 更新时间:2023-12-02 19:16:43 25 4
gpt4 key购买 nike

我坚持无法在浏览器中的localhost:8091上打开我的REST Spring Boot应用程序的问题。
这是我的docker-compose.xml(一切都本地部署在Docker Desktop上):

version: '3.3'

services:
postgres:
build:
context: services/postgres
dockerfile: Dockerfile.development
command: postgres
ports:
- "5432:5432"
environment:
- POSTGRESS_USER=postgres
- POSTGRESS_DB=postgres
- POSTGRESS_PASSWORD=qqq
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- "db-data:/var/lib/postgresql/data"


app:
build:
context: services/app
dockerfile: Dockerfile.development
command: java -jar ./app.jar
environment:
- PORT=8091
network_mode: host
image: 'my-java-app'
ports:
- 8091:8091
depends_on:
- postgres

angular:
build:
context: services/angularfrontend
dockerfile: Dockerfile.development
image: 'my-angular-app'
ports:
- 80:80

volumes:
db-data:
Spring Boot App通常在 8091上启动并连接到数据库,但是随后我无法从本地计算机对其API进行调用(“连接被拒绝”)。
Angular应用程序正常打开(在 localhost:80上),但无法调用 localhost:8091 Spring Boot应用程序。
enter image description here
enter image description here

最佳答案

从 Angular 服务容器到localhost:8091的调用失败,对吗?
尝试在 Angular 前端容器中覆盖对后端的调用
使用应用程序:8091 (这是调用后端服务的方式),而不是localhost:8091。
在“ Angular ”容器中,localhost不会转换为“app”容器。
您不能使用localhost从一个容器进入另一个容器。
容器内的本地主机将转换为该容器的ip。
尝试在您的 Angular 应用程序中使对后端的调用可配置,然后在使用环境的docker-compose中覆盖该配置。
还要对springboot应用程序应用程序执行此操作。
我看不到在环境中您覆盖对postgress的调用。
在删除network_mode:host之后,在application.properties中公开该配置并在docker-compose中覆盖。

关于spring-boot - 无法连接到本地运行在Docker上的Spring Boot应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63193272/

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