Для запуска нескольких 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 по своему усмотрению.