无法连接到泊坞窗容器内部的postgresql

我正在写一个去应用程序dockerized在2个容器:数据库和应用程序。

当启动容器的docker – 组成'我看到的消息: 拨号TCP:lookup dbpgsql在127.0.0.11:53:没有这样的主机

DB_ENV_DB=cldb DB_ENV_USER=cldb DB_ENV_PASS=cldb DB_PORT_5432_TCP_ADDR=dbpgsql DB_PORT_5432_TCP_PORT=5432 

这里是我的docker-compose.yml

 version: '2' services: server: hostname: app image: golang:1.7.3-alpine build: ./server/ privileged: true container_name: server command: go run server.go volumes: - ../src/:/go/src/ - ../server.go:/go/server.go links: - db:db ports: - '8080:8080' env_file: environment db: hostname: dbpgsql image: postgres:latest container_name: db environment: POSTGRES_USER: cldb POSTGRES_PASSWORD: cldb POSTGRES_DB: cldb ports: - '5432:5432' volumes: - ./data:/docker-entrypoint-initdb.d 

执行DB.Ping()时,应用程序失败:

 func InitDB(dataSourceName string) { var err error DB, err = sql.Open("postgres", dataSourceName) if err != nil { log.Panic(err) } if err = DB.Ping(); err != nil { log.Panic(err) } DB.SetMaxIdleConns(100) } 

您可以使用服务名称(或在链接选项中给出的别名)连接到数据库,在你的情况下它是db 。 主机名选项设置容器知道自己的主机名。 但它不会出现在docker ps中,也不会出现在任何其他容器的/ etc / hosts文件中。 ( https://docs.docker.com/engine/userguide/networking/default_network/configure-dns/