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

Для запуска нескольких Docker-контейнеров с MySQL на одном порту и на одном хосте, вам потребуется использовать функциональность Docker Compose.

Docker Compose — это инструмент, который позволяет вам определять и запускать множество контейнеров Docker из файла конфигурации (обычно называемого docker-compose.yml). С помощью Docker Compose вы можете установить и настроить группу контейнеров как одну службу, устанавливая все зависимости и определяя сети и тома для обмена данными между контейнерами.

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

version: '3'
services:
  mysql1:
    image: mysql:latest
    container_name: mysql1
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: your_password
    volumes:
      - ./mysql1/data:/var/lib/mysql

  mysql2:
    image: mysql:latest
    container_name: mysql2
    ports:
      - 3307:3306
    environment:
      MYSQL_ROOT_PASSWORD: your_password
    volumes:
      - ./mysql2/data:/var/lib/mysql

В этом примере мы определяем два сервиса (контейнера) с именами mysql1 и mysql2. Каждый контейнер использует официальный образ MySQL и связывается с локальным портом 3306 и 3307 соответственно на хостовой машине.

Значение MYSQL_ROOT_PASSWORD задает пароль для пользователя root в каждом контейнере. Не забудьте заменить "your_password" на фактический пароль, который вы хотите использовать.

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

Чтобы запустить контейнеры, выполните следующую команду из директории, где находится файл docker-compose.yml:

docker-compose up -d

Команда docker-compose up -d запустит контейнеры в фоновом режиме.

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