我开始使用Spring Boot应用程序的映像,这取决于PostgresSql数据库。因此,如果没有要连接的数据库,Spring Boot容器将无法运行。
数据库正在运行,但由于--link
选项现在在docker中deprecated。当我无法运行SpringBoot然后执行docker network connect my-net postgres
命令时,如何连接这两个容器。
我创建了两个单独的Dockerfiles
图像,这可能只是使用docker-compose
方法吗?
答案 0 :(得分:4)
我建议使用docker compose文件来定义您的服务。使用docker compose文件,您可以使用depends_on
选项:
version: '3'
services:
web:
build:
context: .
dockerfile: dockerfile-web
depends_on:
- postgres-db
postgres-db:
build:
context: .
dockerfile: dockerfile-postgres-db
您还可以在docker compose文件中定义networks以连接容器:
version: '3'
services:
web:
build:
context: .
dockerfile: dockerfile-web
depends_on:
- postgres-db
networks:
- backend-net
postgres-db:
build:
context: .
dockerfile: dockerfile-postgres-db
networks:
- backend-net
networks:
backend-net:
driver: bridge
答案 1 :(得分:3)
首先,开始使用用户定义的桥接网络。这样您就不必使用被认为是遗留的--link
,并且容器将能够使用其名称进行通信。这是默认桥接网络不提供的内容。
来自:Docker docs
用户定义的网桥与默认网桥之间的差异
- 用户定义的网桥在容器之间提供自动DNS解析。
其次,您可以通过以适当的顺序/根据您的情况运行docker
命令来“手动”执行此操作,但正如Sebastian在docker-compose
文件中演示的那样,它更容易处理就这样。