2016-01-28 8 views
1

Я использую mac для запуска докеров и, следовательно, я зависим от boot2docker или docker-machine. Мое приложение, запущенное в контейнере, нуждается в ip-хосте docker.Невозможно использовать замену переменных в docker-compose

Я увидел, что переменная функция замены докеров-сокетов - именно то, что мне нужно. Когда я пытаюсь что-то вроде ниже него работает отлично

extra_hosts: 
- "somehost:162.242.195.82" 

НО когда я пытаюсь что-то вроде:

export DOCKER_HOST="64.88.225.66" 



extra_hosts: 
     - "host:${DOCKER_HOST}" 

я получаю:

$ docker-compose build --no-cache 
Traceback (most recent call last): 
    File "<string>", line 3, in <module> 
    File "/code/compose/cli/main.py", line 54, in main 
    File "/code/compose/cli/docopt_command.py", line 23, in sys_dispatch 
    File "/code/compose/cli/docopt_command.py", line 26, in dispatch 
    File "/code/compose/cli/main.py", line 169, in perform_command 
    File "/code/compose/cli/command.py", line 53, in project_from_options 
    File "/code/compose/cli/command.py", line 89, in get_project 
    File "/code/compose/cli/command.py", line 70, in get_client 
    File "/code/compose/cli/docker_client.py", line 28, in docker_client 
    File "/code/.tox/py27/lib/python2.7/site-packages/docker/client.py", line 58, in __init__ 
    File "/code/.tox/py27/lib/python2.7/site-packages/docker/utils/utils.py", line 362, in parse_host 
docker.errors.DockerException: Bind address needs a port: 64.88.225.66 
docker-compose returned -1 

Я не знаю, почему он хочет порт. Это было не очень приятно, когда я дал ему номер порта.

Итак, как я могу получить мой ip-адрес докера в мой контейнер? Было бы неплохо, если бы я мог передавать команды вроде boot2docker ip или docker-machine ip default в разделе extra_hosts, или, может быть, если docker-compose мог бы выполнить скрипт, чтобы получить это значение, было бы здорово!

ответ

2

Проблема заключается в том, что DOCKER_HOST является переменным, используемым самыми docker-compose (https://docs.docker.com/compose/reference/overview/#docker-host) и формат является неправильным (требуется tcp:// схему и порт я считаю).

Вам нужно будет выбрать другую переменную, чтобы включить ее в extra_hosts:.

В противном случае вы можете просто передать его в качестве переменной окружения (environment: [DOCKER_HOST=]) и разобрать ip-адрес из него в контейнере.

+0

Ах, верно, большое вам спасибо! Было бы хорошо, если бы я мог сделать что-то вроде extra_hosts: - "some_host:' SBIN/Ifconfig eth0 | Grep 'инет адр:' | вырезать -d: -f2 | AWK '{печать $ 1}' '" – user1807948

 Смежные вопросы

  • Нет связанных вопросов^_^