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