2017-01-18 6 views
0

У меня есть следующий докер-файл: создания сообщенияКак получить контейнер Ip из другого контейнера?

version: '2' 
services: 
    node: 
    build: ./node/ 
    ports: 
     - "3000:3000" 
    volumes: 
     - ~/src/api:/code 
    links: 
     - postgres 
    environment: 
     - NODE_ENV=dev 
     - POSTGRES_ADDRESS=postgres 

    postgres: 
    build: ./postgres/ 
    ports: 
     - "8000:5432" 
    environment: 
     - POSTGRES_PASSWORD=pw 
    volumes: 
     - ~/Postgres/data/:/var/lib/postgresql/data 

Но когда я достигаю process.env.POSTGRES_ADDRESS в моих nodejs, он возвращает 'Postgres'. Так я всегда это делал, и он должен вернуть ip-адрес контейнера postgres.

Любые предложения о том, как я могу получить доступ к контейнеру postgres ip?

+0

Зачем нужен контейнер IP? вы всегда можете получить доступ к имени контейнера, например 'postgres' в вашем примере. Может быть, нужно переименовать этот вопрос в «как получить контейнер Ip из другого контейнера?» потому что переменная env не может динамически конвертировать имя контейнера в ip-адрес –

+0

, и если вам нужно получить ip-адрес от имени хоста, вы можете использовать nslookup: 'nslookup postrges' –

+0

Вы абсолютно правы. Спасибо. Я думал, что я явно нуждаюсь в ip для этого, чтобы работать в моем приложении nodejs. – mrlarssen

ответ

0

У вас может быть доступ к другому контейнеру в сети докеров по имени контейнера.

Также докер создает DNS-сервер с IP 127.0.0.11, и вы можете попросить его «где не мой контейнер», как nslookup postrges

1

Из документов: «Переменные среды больше не рекомендуемый метод подключения к связанным услугам.»

https://docs.docker.com/compose/link-env-deprecated/

комментарий

@Bukharov Сергея это принято отвечать:

«Зачем вам нужен контейнер IP вы всегда можете получить доступ по имени контейнера, как Postgres в вашем примере Может быть там нужно?. переименуйте этот вопрос в «как получить контейнер Ip из другого контейнера?», поскольку переменная env не может динамически конвертировать имя контейнера в ip-адрес - «

, поскольку мне не нужен IP-адрес, только способ подключения к контейнер.