我有一个Springboot应用程序,已经被Docker化了。
它在端口8081
上公开,可以按预期访问它。
http://<ipaddress>:8081
问题
在Docker容器中的Springboot应用程序需要连接到同一主机上(不在容器中)的Postgres数据库,但似乎它没有访问主机网络的权限。
连接到localhost:5432被拒绝
Docker命令:
docker run -t --rm -d -p 8081:8081 --name nexct-approval-service-container nexct-approval-service-image
我了解到如果想要连接网络,可以使用以下方法:
--network host
然而,之后它停止允许访问应用程序本身(端口8081):
WARNING: Published ports are discarded when using host network mode
问题
如何允许访问端口8081的SpringBoot应用程序,并允许Springboot应用程序访问主机网络以便连接到数据库?
更新
我的数据库连接在Spring Boot中定义:
application.properties
spring.datasource1.driver-class-name=org.postgresql.Driver
spring.datasource1.jdbc-url=jdbc:postgresql://localhost:5432/pims
spring.datasource1.username=postgres
spring.datasource1.password=
MultipleDBConfig.java
@Configuration
@ComponentScan(basePackages = "com.nexct")
public class MultipleDBConfig {
@Bean(name = "datasource1")
@ConfigurationProperties("spring.datasource1")
@Primary
public DataSource dataSource1(){
return DataSourceBuilder.create().build();
}
@Bean(name = "datasource2")
@ConfigurationProperties("spring.datasource2")
public DataSource dataSource2(){
return DataSourceBuilder.create().build();
}
}