Как из приложения docker compose подключиться к работающему контейнеру на default network?

На хосте работает MySQL в контейнере, запущенном через docker run, не дефолтной сети.

Тут же версия приложения в разработке, которая поднимает свои сервисы через docker-compose up.
В приложении будет собственный MYSQL, но на время разработки хорошо бы подключиться с уже запущенному MySQL.

Возможно ли это, и как?

Примерная команда запуска MySQL:
docker run		\
				--name mysql	\
				-p 3306:3306	\
				-d				\
				mariadb


myapp/docker-compose.yml:
version: '3'
services:
  redis:
    container_name: composed_redis
    image: redis:latest

  php-fpm:
    container_name: composed_php_fpm
    image: my/php-fpm

  nginx:
    container_name: composed_nginx
    image: nginx:alpine
    ports:
      - "100500:80"
    depends_on:
      - php-fpm

При этом создаётся сеть myapp_default.

Из сервиса php-fpm надо как-то подключаться к БД. Как?

Пробовал для сервиса php-fpm указывать доп. network, где прописывал name: default, но это не работало. Да и по имени не найти в default сети сервис. Только если бы кастомная сеть была для просто-контейнеров.
  • Вопрос задан
  • 332 просмотра
Решения вопроса 1
sergiks
@sergiks Автор вопроса
♬♬
Решил костыльно (?) – network connect подключил нужный отдельностоящий контейнер ещё и к сети docker-composer'а:
docker network connect myapp_default mysql
При этом и приложение уже работало и mysql-контейнер был запущен.

После этого сервис стал доступен внутри под именем хоста mysql, как и требовалось.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
network_mode: bridge в описании сервисов будет пихать их в default сеть Докера, в паре с этим параметром необходимо заполнять links из-за особенностей этой сети.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы