Докер новичок здесь.
То, что я пытаюсь достичь, - запустить несколько контейнеров MySQL с компоновкой докеров.
Это мой докер-compose.yml:
version: '2'
services:
mysql:
build: ./docker-configs/mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: admin
volumes:
- ./data/mysql:/var/lib/mysql
- ./data/init.d:/docker-entrypoint-initdb.d
mysql2:
build: ./docker-configs/mysql2
ports:
- "3306:3307"
environment:
MYSQL_ROOT_PASSWORD: admin
volumes:
- ./data/mysql2:/var/lib/mysql2
- ./data/init.d:/docker-entrypoint-initdb.d
nginx-proxy:
image: jwilder/nginx-proxy
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
- ./docker-configs/nginx-proxy/certs:/etc/nginx/certs
ports:
- '80:80'
- '443:443'
Но когда я запускаю docker-compose -d, он показывает мне ошибку ниже:
ОШИБКА: for consultingdocker_mysql2_1 Не удается запустить службу mysql2: драйвер не смог выполнить внешнее подключение на конечной точке consultingdocker_mysql2_1 (7eac3d28093db7be7b5c81495ee652f6a1df8208388d33df668f1732a118481a): Привязка для 0.0.0.0:3306 не удалась: порт уже выделен
ОШИБКА: для mysql2 Не удается запустить службу mysql2: драйвер не смог выполнить внешнее подключение на конечной точке consultingdocker_mysql2_1 (7eac3d28093db7be7b5c81495ee652f6a1df8208388d33df668f1732a118481a): Привязка для 0.0.0.0:3306 не удалась: порт уже выделен ОШИБКА: Ошибки при запуске проекта.
Пожалуйста, дайте мне знать, что мне здесь не хватает?
Порт 3306
уже используется на хосте контейнером mysql
, поэтому вы не можете выделить тот же порт на хосте для контейнера mysql2
. Измените mysql2
службы mysql2
на что-то ниже, и она должна работать -
mysql2:
build: ./docker-configs/mysql2
ports:
- "3307:3307"
environment:
MYSQL_ROOT_PASSWORD: admin
volumes:
- ./data/mysql2:/var/lib/mysql2
- ./data/init.d:/docker-entrypoint-initdb.d
Теперь ваша служба mysql2
будет доступна на порту 3307 на хосте.
Конфигурация массива "порт" инвертирована. Если вы напишете это:
port:
- "3306:3307"
это означает "связывать порт 3306 в сети хоста с портом 3307 в контейнерной сети".
Хотя вы хотите точно противоположное.
Меняйте номера, и они будут работать