Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Настройка порта для БД #52

Open
jasmanchik opened this issue Nov 18, 2022 · 7 comments
Open

Настройка порта для БД #52

jasmanchik opened this issue Nov 18, 2022 · 7 comments
Labels
enhancement New feature or request

Comments

@jasmanchik
Copy link

Сейчас нет возможности подключаться к БД например из IDE, так как нет проброса порта на локальную машину.

Предлагаю в кфг docker-compose-mysql.yaml сделать параметр "port" и подставлять туда значение из .env, соответственно у каждого проекта будет доступен свой порт для подключения и они смогут существовать параллельно.
Еще лучше при запуске проекта (dl up) сделать проверку на доступность данного порта (который задаем в .env), и выкидывать ошибку, что этот порт уже занят другим контейнером

@varrcan
Copy link
Collaborator

varrcan commented Nov 18, 2022

На самом деле, порт 3306 пробрасывается, но только под IP контейнера.
То есть можно посмотреть IP адрес контейнера с базой данных (через команду dl ps, например) и потом этот IP прописать в подключении IDE.
Минус в таком подходе, IP будет меняться при каждом перезапуске контейнеров.

Я сейчас изучаю возможности traefik, умеет ли он проксировать запросы к бд, то есть хочу попробовать сделать локальный домен в качестве имени хоста к базе.
Более сложным решением является запуск собственного DNS, который разрешает имена контейнеров. Но этот вариант потребует установки пакета resolvconf, то есть будет запрос на root доступ, что противоречит концепции DL.

img181120228674

img181120223828

@jasmanchik
Copy link
Author

Понял, на счет IP не додумался. Буду ждать новостей по этой теме, спасибо

@varrcan varrcan added the enhancement New feature or request label Nov 28, 2022
@Bezponiki
Copy link

Идей как сделать такое же подключение к wsl2 нет ?)

@jasmanchik
Copy link
Author

Можно просто добавить в .env параметр типа MYSQL_LOCAL_PORT, и из него брать порт для локальной машины. Сейчас просто попробовал - получилось и решил написать
image
image

@varrcan
Copy link
Collaborator

varrcan commented Feb 4, 2023

Можно просто добавить в .env параметр типа MYSQL_LOCAL_PORT

Да, только если не указать MYSQL_LOCAL_PORT, то он будет по умолчанию 3306, таким образом одновременно 2 проекта уже не поднять, порт будет занят.

@varrcan
Copy link
Collaborator

varrcan commented Feb 4, 2023

К сожалению, через traefik так сделать нельзя..
traefik/traefik#5155

@varrcan varrcan added wontfix This will not be worked on and removed wontfix This will not be worked on labels Feb 12, 2023
@jasmanchik
Copy link
Author

А есть способ проверить порт на занятость? Допустим если порт занят, то подбирать рандомный и так, пока не будет подобран свободный и показывать в результативном сообщении на каком порту доступна БД)
А если порт указан в .env, и если он занят, то выкидывать ошибку и останавливать запуск контейнера

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants