如何将现有docker容器上的Spring启动应用程序链接到数据库?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将现有docker容器上的Spring启动应用程序链接到数据库?相关的知识,希望对你有一定的参考价值。
我想使用我的应用程序从一个docker容器与其他docker容器,一个用于postgres
,一个用于solr
。
我的码头组成是:
version: '3'
services:
core:
build: ./core
ports:
- "8081:8081"
environment:
- "SPRING_PROFILES_ACTIVE=production"
links:
- postgresdb
- solrdb
postgresdb:
image: postgres:9.4
container_name: postgres
ports:
- "5432:5432"
environment:
- DB_DRIVER=org.postgresql.Driver
- DB_URL=jdbc:postgresql://localhost:5432/db
- DB_USERNAME=db
- DB_PASSWORD=db
networks:
default:
solrdb:
image: solr:5.5
container_name: solr
ports:
- "8983:8983"
environment:
- DB_URL=http://localhost:8984/solr
networks:
default:
networks:
default:
external:
name: mynet
我已经创建了solr
和postgres
的容器,只是我想使用它。我怎么能这样做?
答案
您已经公开了solrdb和postgresdb的端口。因此,在您的其他容器中,通过容器名称和公开端口访问这些Dbs。
例如,solrDb应该通过solrdb访问:8983和
应该通过postgresdb:5432访问postgresdb
编辑:确保两个容器都在同一网络中运行。您需要为所有容器添加此网络字段。
postgresdb:
image: postgres:9.4
container_name: postgresdb
ports:
- "5432:5432"
environment:
- DB_DRIVER=org.postgresql.Driver
- DB_URL=jdbc:postgresql://localhost:5432/db
- DB_USERNAME=db
- DB_PASSWORD=db
networks:
default:
并在所有docker文件的末尾
networks:
default:
external:
name: <your-network-name>
并确保在启动这些容器之前运行预定义的网络。要创建网络:
docker network create --driver overlay --scope global <your-network-name>
注意:postgresdb:5432可以访问您的容器('postgresdb')
以上是关于如何将现有docker容器上的Spring启动应用程序链接到数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何对 Docker 容器中运行的 Spring Boot 应用程序进行健康检查?