Как организовать запуск нескольких Docker-контейнеров с MySQL на одном порту и на одном хосте?

Как можно запустить докер контейнеры с веб-сайтами и базами данных на VPS с одним IP-адресом?
  • 16 декабря 2023 г. 13:17
Ответы на вопрос 2
Для запуска нескольких Docker-контейнеров с MySQL на одном порту и на одном хосте вы можете использовать инструмент Docker Compose. Docker Compose позволяет вам определить и управлять несколькими контейнерами как часть единого проекта.

Вот пример файла docker-compose.yml, который запускает два контейнера с MySQL на одном порту:

```yaml
version: '3'
services:
  db1:
    image: mysql
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=mysecretpassword1

  db2:
    image: mysql
    ports:
      - 3307:3306
    environment:
      - MYSQL_ROOT_PASSWORD=mysecretpassword2
```

Этот файл определяет два сервиса: db1 и db2. Каждый сервис использует образ MySQL и привязывается к портам 3306 и 3307 соответственно. Значение MYSQL_ROOT_PASSWORD устанавливает пароль для пользователя root в MySQL.

Вы можете запустить эти контейнеры с помощью команды `docker-compose up` в директории, содержащей файл docker-compose.yml.

Чтобы запустить Docker-контейнеры с веб-сайтами и базами данных на VPS с одним IP-адресом, вы можете использовать инструменты, такие как Nginx или Apache, для проксирования запросов к разным контейнерам на основе имени хоста или пути URL.

Вот пример конфигурации Nginx, который проксирует запросы к разным контейнерам, в зависимости от имени хоста:

```
server {
  listen 80;
  server_name db1.example.com;

  location / {
    proxy_pass http://localhost:3306;
  }
}

server {
  listen 80;
  server_name db2.example.com;

  location / {
    proxy_pass http://localhost:3307;
  }
}
```

В этом примере, если запрос отправлен на db1.example.com, Nginx проксирует его на контейнер с портом 3306, а если запрос отправлен на db2.example.com, он будет проксирован на контейнер с портом 3307. Вы можете добавить другие конфигурации для проксирования запросов к веб-сайтам.

Не забудьте настроить DNS-записи для ваших доменных имен, чтобы они указывали на IP-адрес вашего VPS.
В http протоколе есть заголовок, позволяющий определить, к какому сайту делается запрос. 
в mysql протоколе нет такого признака.
так что вешайте мускул серверы на разные порты.
Похожие вопросы