Ссылки на приложения в Docker Swarm Mode

Я хотел бы знать, как мы связываем веб-приложение с базой данных в режиме Docker Swarm. Я очень плохо знаком с режимом docker swarm и имею базовую настройку кластера на моей локальной машине. Любые ссылки будут великолепны.

Пример: размещение приложения drupal (связанные контейнеры drupal cms с контейнером базы данных mysql).

Спасибо

2

Решение

Правильно, использование пользовательских сетей — это путь вперед. Очень простой пример, чтобы вы начали;

Создать «оверлейную» сеть (оверлейные сети позволяют контейнерам обмениваться данными, даже если они работают на разных узлах в рое);

docker network create --driver=overlay my-network

Создать службу базы данных с именем my-dbи прикрепить его к my-network сеть. Нет необходимости «публиковать» порт базы данных, потому что drupal свяжется с базой данных через my-network сеть. Публикуйте порты базы данных только в том случае, если вы хотите, чтобы база данных была общедоступной.

docker service create \
--name=my-db \
-e MYSQL_ROOT_PASSWORD=topsecret \
-e MYSQL_DATABASE=drupal\
-e MYSQL_USER=drupal-user \
-e MYSQL_PASSWORD=secret \
--network=my-network \
mysql:5.7

Создать сервис друпал (по имени mysite), а также подключите его к той же сети. Опубликуйте порты сайта, потому что вы хотите, чтобы он был общедоступным

docker service create \
--name=mysite \
--network=my-network \
--publish=8080:80 \
drupal:8.2-apache

После того, как сервисы созданы и контейнеры запущены (вы можете проверить статус с помощью docker service ls), вы можете посетить <host-ip>:8080 в вашем браузере. В режиме роя, <host-ip> может быть IP-адрес любой хозяин в вашем рое. «Сетка маршрутизации» автоматически направит сетевое соединение на узел, на котором работает контейнер.

Теперь, чтобы настроить drupal, используя имя пользователя / пароль, которые вы установили в MYSQL_USER а также MYSQL_PASSWORDи используя my-db в качестве имени хоста для базы данных (в разделе дополнительных параметров) — при использовании сетей Docker вы можете подключаться к другим службам в той же сети через их имя.

конфигурация друпал

Это просто очень быстрый пример. Некоторые вещи, чтобы посмотреть на это;

  • Тома (сохраняйте загрузки и пользовательские данные в томе, чтобы информация могла сохраняться при обновлении вашего контейнера)
  • Секреты; передача имени пользователя и пароля в качестве переменных среды небезопасна. Докер 1.13 представит docker secrets, которые позволяют передавать учетные данные базы данных более безопасным способом. Документация еще не опубликована, но вы можете найти их на GitHub
3

Другие решения

использование ссылок в докере, по-видимому, более унаследовано, поэтому для подключения к контейнерам (хотя я все еще использую этот метод сам)

«Новый» способ сделать это — использовать докерские сети, вы можете прочитать об этом здесь:
https://docs.docker.com/engine/userguide/networking/get-started-overlay/

Надеюсь это поможет

1

По вопросам рекламы [email protected]