Не удается подключиться к postgresql, который находится внутри контейнера docker



Я пишу приложение go, которое dockerized в 2 контейнерах: db и app.



При запуске контейнеров 'docker-compose up' я вижу сообщение: наберите 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


Вот моя докер-композиция.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)
}
833   1  

1 ответ:

Вы можете подключиться к базе данных с именем службы (или псевдонимом, указанным в параметрах ссылок), в вашем случае это db. Параметр Hostname задает имя хоста, по которому контейнер знает себя. Но он не появится ни в docker ps, ни в файле/etc / hosts любого другого контейнера. (https://docs.docker.com/engine/userguide/networking/default_network/configure-dns/)

Comments

    Ничего не найдено.