Общайтесь между двумя контейнерами в облачной сборке Google - PullRequest
0 голосов
/ 27 августа 2018

Я использую свой конвейер CI / CD в облачной сборке Google. Мое приложение имеет web и wget контейнеры. Я пытаюсь достичь web от wget

Облачная сборка, внутренне используемая cloudbuild мостовая сеть при запуске контейнеров как этапы. Поэтому я ожидаю, что эти шаги будут общаться с использованием имен. Но его провал.

Если я создам свой собственный док-мост, тогда они будут общаться.

Я хочу знать, почему сеть cloudbuild не работает должным образом.

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

cloudbuild.yaml

steps:

- name: 'gcr.io/cloud-builders/docker'
  id: Web server
  args: ["run", "-d", "--name", "mani", "manikantanr/hostname_ip"]

- name: 'gcr.io/cloud-builders/wget'
  id: wget web mani:8000
  args: ["-qO-", "http://mani:8000"]

Чтобы понять внутреннюю структуру cloudbuild, я использовал несколько команд docker.

отладки cloudbuild.yaml

steps:

- name: 'gcr.io/cloud-builders/docker'
  id: Docker Version
  args: ["version"]

- name: 'gcr.io/cloud-builders/docker'
  id: Docker info
  args: ["info"]

- name: 'gcr.io/cloud-builders/docker'
  id: Docker volume ls
  args: ["volume", "ls"]

- name: 'gcr.io/cloud-builders/docker'
  id: Docker volume inspect homevol
  args: ["volume", "inspect", "homevol"]


- name: 'gcr.io/cloud-builders/docker'
  id: Docker network ls
  args: ["network", "ls"]

- name: 'gcr.io/cloud-builders/docker'
  id: Docker network inspect cloudbuild
  args: ["network", "inspect", "cloudbuild"]

- name: 'gcr.io/cloud-builders/docker'
  id: Docker ps before
  args: ["container", "ls", "--no-trunc"]

- name: 'gcr.io/cloud-builders/docker'
  id: Web server
  args: ["run", "-d", "--name", "mani", "manikantanr/hostname_ip"]
  # waitFor: ['-']

- name: 'gcr.io/cloud-builders/wget'
  id: wget ipinfo
  args: ["-qO-", "https://ipinfo.io"]

- name: 'gcr.io/cloud-builders/docker'
  id: Docker ps after
  args: ["container", "ls", "--no-trunc"]

- name: 'gcr.io/cloud-builders/docker'
  id: Docker inspect mani host network
  args: ["inspect", "mani"]

- name: 'gcr.io/cloud-builders/docker'
  id: Docker alpine ifconfig inside container
  args: ["run", "alpine", "ifconfig"]

- name: 'gcr.io/cloud-builders/wget'
  id: wget mani:8000
  args: ["-qO-", "http://mani:8000"]

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я провел эксперимент, и похоже (без какой-либо специальной настройки) вы можете связываться между контейнерами шагов сборки, используя имя step_x (нумерация на основе 0).

Например, если у вас есть веб-сервер, прослушивающий конечную точку / hello (на порту 8081) в контейнере для первого шага сборки (step_0). Вы можете отправлять запросы к этой конечной точке из другого контейнера шага сборки, отправив запрос на http://step_0:8081/hello.

0 голосов
/ 19 сентября 2018

У меня была похожая проблема при настройке интеграционных тестов при облачной сборке. Я пытался запустить интеграционные тесты другого компоновщика (go-builder) для других моих контейнеров (запущенных с помощью контейнеров, созданных сообществом docker-compose).

Без указания каких-либо сетей в docker-compose.yaml все контейнеры запускаются в сети по умолчанию (https://docs.docker.com/compose/networking/). В облачной сборке создается новая сеть с именем cloudbuild_default и помещаются все мои контейнеры там. Заставив все контейнеры присоединиться к cloudbuild сети через мой файл docker-compose.yaml, я смог установить связь и выполнить свои тесты против них.

#docker-compose.yaml

networks:
  default:
    external:
      name: cloudbuild

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

...