Я работаю с узлом, docker, mysql и sequelize, и я пытаюсь подключить sequelize к контейнеру mysql, работающему на docker. Он будет подключаться только через порт 3306, несмотря на то, что я изменил "порты" на 3308-3308. Когда я просматриваю запущенные контейнеры, я получаю следующее для базы данных mysql:
ticketgo_database_1 docker-entrypoint.sh mysqld Up 3306/tcp,
0.0.0.0:3308->3308/tcp
Это объясняет, почему он может подключаться только к порту 3306, но мне нужно изменить порт подключения с 3306, так как этот порт занят на моем компьютере. Как я могу это сделать?
Контейнер Mysql:
database:
image: mysql
environment:
MYSQL_DATABASE: "ticketgo"
MYSQL_ROOT_PASSWORD: "pass"
volumes:
- "./sql:/docker-entrypoint-initdb.d"
ports:
- "3308:3308"
Я думаю, что ваше приложение управляется и докерером. Нет необходимости изменять, какой порт MySQL прослушивает в своем контейнере. Оставьте squelize соединение с databade: 3306 и либо не укажете сопоставление портов в MySQL docker compose config, либо укажите: 3308:3306
что означает, что порт 3308 на хосте будет сопоставлен с контейнерным портом 3306. Это не означает, что MySQL будет слушать 3308. Он будет продолжать прослушивание в своем контейнере 3306, и новый порт 3308 на хосте будет сопоставлен с ним.
Указывайте только сопоставление портов, если вам нужно получить доступ к MySQL из внешних сервисов, связанных с док-станцией (например, из другого приложения на вашем хосте или в графическом интерфейсе MySQL)
В разделе "Порт" измените второй порт на любой, который вы хотите "3308: 3309";
Или вы можете сделать это по ней -p 3309: 3308