2 docker контейнера на одном IP адресе
пытаюсь собрать веб приложение с mysql в докере, мой docker-compose выглядит так
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./:/usr/src/clients_base
ports:
- 8000:8000
env_file:
- .env.dev
depends_on:
- db
db:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
volumes:
- /db:/var/lib/mysql
environment:
- MYSQL_HOST='localhost'
- MYSQL_USER='user'
- MYSQL_PASSWORD='password'
- MYSQL_DB='db'
- MYSQL_ROOT_PASSWORD='password'
ports:
- 3306:3306
При запуске, получаю ошибку коннекта к бд "Host '172.18.0.1' is not allowed to connect to this MySQL server", что очевидно. Можно ли это решить, не давая грант конкретному юзеру на коннект с любого IP адреса?
Пробовал указывать docker-compose MYSQL_HOST: db и в настройках приложения такой же localhost - не сработало, т.к на нем нет сокета mysqld
Ответы (1 шт):
Автор решения: nomnoms12
→ Ссылка
В настройках Django в качестве HOST'а базы данных Вы должны указать имя сервиса:
DATABASES = {
'default': {
'HOST': 'db',
...
}
}
Открывать доступ извне к MySQL при этом совсем необязательно:
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./:/usr/src/clients_base
ports:
- 8000:8000
env_file:
- .env.dev
depends_on:
- db
db:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
volumes:
- /db:/var/lib/mysql
environment:
- MYSQL_HOST='db'
- MYSQL_USER='user'
- MYSQL_PASSWORD='password'
- MYSQL_DB='db'
- MYSQL_ROOT_PASSWORD='password'