DeployCode
Организации и проекты

Архитектура

Карта сервисов и связей между ними.

Страница «Архитектура» показывает сервисы выбранной области на карте: приложения и базы PostgreSQL, сгруппированные по проектам и окружениям, а также их домены и связи.

Связи строятся по сохранённым настройкам. DeployCode не следит за реальными соединениями и трафиком между сервисами. Доступ приложения к Postgres можно проверить вручную.

Что на карте

  • Сервисы — карточки приложений и баз PostgreSQL. У PostgreSQL видны тома.
  • Домены и порты — как сервис доступен снаружи.
  • Инфраструктура — Traefik на сервере (слой выключен по умолчанию).
  • Связи — стрелки между сервисами.

Сервисы вне выбранной области, на которые ссылается сервис из области, тоже показываются — с пометкой «Вне области».

Как появляются связи

DeployCode читает переменные сервиса и проводит стрелку, если значение указывает на другой сервис:

  • URL postgres://, postgresql://, http:// или https://;
  • пара переменных PGHOST и PGPORT или DB_HOST и DB_PORT.

Адрес сопоставляется с именем сервиса Docker, его доменом или публичным IP и опубликованным портом. Ссылки на переменные (${{environment.DATABASE_URL}}), секреты и ссылки на сервисы сначала подставляются. Учитываются только переменные, доступные при запуске.

Если ссылку не удалось сопоставить, она попадает в «Неразрешённые ссылки» с причиной: формат не поддерживается, подходящий сервис не найден, подходят сразу несколько или переменную, на которую идёт ссылка, не удалось подставить.

Работа с картой

  • Карточки можно перетаскивать — расположение запоминается в браузере.
  • Кнопки масштаба и «Уместить карту».
  • «Настройки карты»: показывать связи, авторасстановка, сбросить карту.
  • «Слои карты»: ссылки в переменных, домены и порты, инфраструктура.

Во время развёртывания карта обновляется сама.

Панель сервиса

Клик по карточке открывает панель сервиса:

ВкладкаЧто в ней
ОбзорСостояние и конфигурация запуска в сравнении с последним развёртыванием
ЗапускиИстория развёртываний (для PostgreSQL — логи)
ПеременныеПеременные сервиса — их можно добавлять и менять здесь. Переменные окружения и проекта видны только для чтения (для PostgreSQL — данные подключения)
СвязиВходящие и исходящие связи
НастройкиРепозиторий, сборка, домены и маршруты, публикации портов (только просмотр)

В панели есть кнопка «Развернуть» и переход на полную страницу сервиса.

Подключения к Postgres

У приложения во вкладке «Связи» есть раздел «Подключения к Postgres». В нём видны переменные приложения, через которые передаётся строка подключения к базе, и можно настроить новую.

Настроить подключение

Нажмите «Настроить подключение к Postgres»:

ПолеЧто указать
PostgresБаза этого окружения и способ подключения: внутренняя сеть (приложение и база на одном сервере) или внешнее подключение через опубликованный порт
Переменная приложенияИмя переменной, по умолчанию DATABASE_URL

После «Сохранить настройки» у приложения появится переменная типа «Ссылка на сервис» на строку подключения. Она доступна только при запуске, а пароль не копируется в интерфейс.

  • Код приложения должен читать эту переменную.
  • Настройки применятся при следующем развёртывании приложения.
  • Сети и порты не изменятся. Для внешнего подключения сначала откройте внешний порт базы.
  • Существующая переменная с тем же именем не перезаписывается: выберите другое имя или измените её во вкладке «Переменные».

Если в списке нет баз, добавьте Postgres в это окружение, проверьте права на его переменные и общую сеть. Для базы на другом сервере настройте внешний порт.

Проверить соединение

У каждого подключения есть кнопка «Проверить соединение». DeployCode запускает на сервере приложения временный клиент Postgres в сети одной работающей реплики приложения и выполняет SELECT 1. Первая проверка может занять до минуты: серверу нужно скачать образ клиента с Docker Hub.

Проверка берёт текущие сохранённые настройки Postgres, а не переменные уже запущенного приложения. Это разовая проверка, а не мониторинг.

Если соединения нет, результат подскажет причину: приложение не запущено, сервер недоступен, имя базы не разрешается в сети приложения, порт закрыт, истекло время ожидания, отклонён пароль, нет базы или прав доступа, ошибка TLS.

Для настройки нужно право записи переменных приложения, для проверки — право чтения переменных приложения и базы.

На этой странице