如何使用用户定义的网桥连接图像?

时间:2018-03-08 08:45:32

标签: docker spring-boot

我开始使用Spring Boot应用程序的映像,这取决于PostgresSql数据库。因此,如果没有要连接的数据库,Spring Boot容器将无法运行。

数据库正在运行,但由于--link选项现在在docker中deprecated。当我无法运行SpringBoot然后执行docker network connect my-net postgres命令时,如何连接这两个容器。

我创建了两个单独的Dockerfiles图像,这可能只是使用docker-compose方法吗?

2 个答案:

答案 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文件中演示的那样,它更容易处理就这样。