Многократный доступ Docker-контейнера к базе данных хоста в Docker Compose - PullRequest
0 голосов
/ 25 августа 2018

Я изучал, как подключить несколько док-контейнеров в одном и том же файле компоновки к базе данных (MySQL / MariaDB) на локальном хосте. В настоящее время база данных предназначена для разработки, но для производства требуется отдельная база данных. Со временем база данных будет развернута в AWS или Azure.

Есть много похожих вопросов по SO, но ни один, похоже, не касается этой конкретной ситуации.

Учитывая существующий docker-compose.yml

version: '3.1'

services:
 db:
  build:
   image: mariadb:10.3
  volumes:
   - "~/data/lib/mysql:/var/lib/mysql:Z"

 api:
  image: t-api:latest
  depends_on:
   - db

 web:
  image: t-web:latest

 scan:
  image: t-scan:latest

 proxy:
  build:
    context: . 
    dockerfile: nginx.Dockerfile
    image: t-proxy
  depends_on:
    - web
  ports:
    - 80:80

Все эти службы обращаются за прокси за nginx, при этом обоим службам api и scan требуется доступ к базе данных. Существуют и другие службы, требующие доступа к базе данных, которые не показаны для упрощения.

Файл составления продукции будет:

version: '3.1'

 api:
  image: t-api:latest
  depends_on:
   - db

 web:
  image: t-web:latest

 scan:
  image: t-scan:latest

 proxy:
  build:
    context: . 
    dockerfile: nginx.Dockerfile
    image: t-proxy
  depends_on:
    - web
  ports:
    - 80:80

Если бы существовал один контейнер, требующий доступа к базе данных, я мог бы просто открыть порты 3306:3306, которые не будут работать для нескольких контейнеров.

Разделение контейнеров нарушает работу обратного прокси-сервера и усложняет развертывание и управление. Я пробовал extra_hosts

extra_hosts:
  - myhost: xx.xx.xx.xx

но это приводит к ошибкам EAI_AGAIN DNS, что странно, поскольку вы можете пропинговать хост изнутри контейнеров. Я понимаю, что это может быть невозможно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...