这是我的 docker-compose.yml 文件:

version: '2'
services:
  app:
    image: pedramrn/webapp:0.1.4
    expose:
      - 8080
    networks:
      - main
    working_dir: /src
    restart: never
    depends_on:
      - db-postgresql
    links:
      - db-postgresql

  lb:
    image: dockercloud/haproxy:1.5
    depends_on:
      - app
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 80:80
    networks:
      - main
    environment:
      - ADDITIONAL_SERVICES=springbootdockertemplate:app


  db-postgresql:
    image: postgres:9.5
    ports:
      - "5432:5432"
    volumes:
      - data-postgresql:/var/lib/postgresql/data
    networks:
      - main
    restart: unless-stopped
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=postgres


volumes:
  data-postgresql:

networks:
  main:

这是数据源 url: jdbc:postgresql://db-postgresql:5432/postgres

如果我删除了 links: db-postgresql spring引导无法连接到postgres数据库,虽然它在单个节点上没有 links 但在不同节点上的每个容器都没有 .

在docker documentation上,使用新的多主机网络功能,容器可以使用其名称进行解析 .

注意:我已根据文档设置了带 Consul 的密钥库 .

Client:                                       
 Version:      1.11.1                         
 API version:  1.23                           
 Go version:   go1.5.4                        
 Git commit:   5604cbe                        
 Built:        Tue Apr 26 23:44:17 2016       
 OS/Arch:      windows/amd64                  

Server:                                       
 Version:      swarm/1.2.3                    
 API version:  1.22                           
 Go version:   go1.5.4                        
 Git commit:   eaa53c7                        
 Built:        Fri May 27 17:25:03 UTC 2016   
 OS/Arch:      linux/amd64   

Dev system: Windows 8.1 X64