Как настроить доступ к одному контейнерному сервису из другого контейнера в конфигурации CircleCI

#docker #docker-compose #containers #circleci

#docker #docker-составить #контейнеры #circleci

Вопрос:

Мой CircleCI конфигурационный файл выглядит следующим образом:

 version: 2
jobs:
  build_test:
    docker:
      - image: circleci/python:3.7.3
      - image: mysql:5.7
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: test
          MYSQL_USER: test
          MYSQL_PASSWORD: test
  

Теперь мне нужно заставить мой основной контейнер (python) обращаться к mysql сервису, размещенному в контейнере mysql. Как мне это настроить?

В docker-compose files я могу сделать это через links . Как мне это сделать в CircleCI конфигурации?

Я понимаю, что одним из вариантов является их ввод docker-compose и вызов docker-compose up изнутри конфигурации CircleCI. Однако я ищу более элегантное решение, а не в зависимости от docker-compose .

Комментарии:

1. Это зависит от того, что вы подразумеваете под «доступом». Если вы просто хотите подключиться к базе данных MySQL, тогда сетевой адрес просто localhost — CircleCI использует некоторые сетевые хитрости, чтобы подключить удаленный сервер к localhost контейнера сборки. По умолчанию используется порт MySQL по умолчанию, но я думаю, вы можете изменить это, либо установив определенное environment значение, либо используя пользовательскую команду для запуска сервера MySQL.

2. Однако, если вы хотите настроить том в этом удаленном контейнере или docker copy в нем и т.д., Вы не сможете этого сделать. Удаленные контейнеры достаточно изолированы, предположительно, по соображениям безопасности.