JUNIOR-BLOG

Для всех кто увлекается программированием

Главная

Как использовать базу данных из первого проекта во втором через docker

Не давно мой тимлид сказал развернуть новый проект на локалке, который  занимается Business Intelligence (BI) - анализом данных. И есть back чью базу нужно было использовать. Необходимо мне было bi проект развернуть на локальном проекте (bi делал не я). На проде все работает через кубернетес, тогда как в  локальной разработке используем докер. На bi был уже готовый docker-compose который поднимал postgres и back. Самый простой вариант, это было либо сделать полный дамп таблицы на back проекте и импортироватьего в postgres контейнер на bi. Я подумал, что попробую я лучше сделать так чтобы bi пользовался back проекта.

Первым делом, я удалил создание postgres контейнера из bi проекта в docker-compose.yaml.

Далее мне нужно созать сеть(network) в которой будут находится два проекта, для этого использовал команду:

docker network create my_network

 

Для просмотра доступных сетей можно использовать команду:

docker network ls

 

Теперь мне нужно лишь сказать что два проекта находятся в одной сети.

Для первого проекта(куда хотим подключится) в самом конце добавляем секцию networks и прописываем имя сети:

networks:
  my_network:
    external: true

 

Последней строкой мы говорим, что нужно подключится к уже существцующей сети.

Далее во втором проекте, так же добавляем эту секцию и для php контейнера прописываем эту сеть

version: '2'

services:
  back:
    build: .
    tty: true
    env_file:
      - .env
    volumes:
      - ./:/var/www/html
    ports:
      - '8080:80'
    networks:
      - my_network
networks:
  my_network:
    external: true

 

Теперь нужно лишь прописать изменить подключение к БД в конфиге. Показываю на примере yii2, поэтому иду в config/db.ph

$db = [
    'class' => 'yii\db\Connection',
    'dsn' => 'pgsql:host=postgres;port=5432;dbname=postgres',
    'username' => env('DB_USER'),
    'password' => env('DB_PASS'),
    'charset' => 'utf8',
    'enableLogging' => false
];

*dsn тоже вынесен в .env

host=postgres это имя контейнера в docker-compose первого проекта, порт там же прописывается, как и имя бд и логопасс.

 

После внесения всех необходимых изменений достаточно перезапустить проекты. Теперь BI успешно подключается к бэкенду и использует его базу данных.

 

 

Похожие статьи

Error response from daemon: all predefined address pools have been fully subnetted

При поднятии проекта возникает ошибка Error response from daemon: all predefined address pools have been fully subnetted

Читать дальше...

Комментарии