Доступ к API хоста из контейнера

Я пытаюсь создать среду сборки с докером, и я хочу сделать это автоматически. я написал собственный двоичный файл go для обработки материалов сборки, и я создал образ, в котором установлены the go binary, maven и java8 sdk.

Шаги, которые выполняет двоичный файл:

  • Клонировать репозиторий git
  • Запустить команду сборки
  • Извлеките артефакты сборки на хост. (что еще не сделано).

Я передаю URL-адрес репо в качестве параметра в двоичный файл во время работы контейнера, и он создает.

Но проблема в том, что мне нужны эти артефакты для запуска встроенного приложения.

Я знаю, что могу использовать volumes, но я не хочу их использовать, потому что, когда сборка завершена, тома становятся dangle, и требуется задание для удаления этих dangling volumes.

Я подумал, что могу создать API для сохранения файлов на хосте (это означает, что я должен запустить этот API внутри хост-компьютера), и мой пользовательский двоичный файл go может отправлять файлы в API, а API будет делать сохранение.

Но когда дело доходит до вызова хоста из контейнера, у меня возникает проблема. я получаю connection refused to port xx ошибку.

Есть ли лучший способ сделать это, или я должен изменить свой подход?


person afrikaan    schedule 02.06.2017    source источник
comment
Как вы звоните хозяину? Кроме того, было бы полезно, если бы вы разместили командную строку, которую вы использовали для запуска контейнера.   -  person Nodebody    schedule 02.06.2017
comment
я просто сделал запрос на получение хоста. командная строка просто выполняет мой двоичный файл, вот и все   -  person afrikaan    schedule 02.06.2017


Ответы (2)


нашел ответ на доступ- host-machine-as-localhost-from-docker-container, который также находится внутри

Запуск контейнера с опцией --add-host является ответом.

person afrikaan    schedule 02.06.2017

Хотя вы могли бы использовать

docker cp CONTAINER:SRC_PATH DEST_PATH

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

docker run -v /local/host/dir:/build/output YOURIMAGE

Это позволяет вам собирать артефакты на вашем хосте из каталога /local/host/dir.

https://docs.docker.com/engine/tutorials/dockervolumes/#locate-a-volume

person Nodebody    schedule 02.06.2017
comment
если бы у меня была возможность сделать это с помощью API, я бы хотел ее использовать. я знаю, что могу использовать это, но это не автоматический способ. - person afrikaan; 02.06.2017