#mysql #docker #docker-compose #grafana
Вопрос:
Ниже приведен мой файл docker-compose.yml
version: '3.2'
services:
mysql-server:
container_name: mysql
ports:
- "13306:3306"
environment:
MYSQL_ROOT_PASSWORD: 12345
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: secret
image: mysql/mysql-server
grafana:
image: grafana/grafana
container_name: grafana
environment:
DB_HOST: mysql-server:3306
ports:
- "3000:3000"
depends_on:
- mysql-server
Я хотел бы подключиться к grafana и использовать mysql в качестве источника данных.
Однако, когда я подключаюсь к grafana, используя ‘ip-адрес контейнера порт’ 172.19.0.3 (извлекается с помощью ‘docker inspect containerId’): 3306. Он не может подключиться к grafana. Я попытался закрыть свой брандмауэр, но все равно потерпел неудачу. Или мой метод подключения неверен?
Кроме того, когда я устанавливаю MySQL в качестве источника данных в grafana, является ли хост: mysql-server: 3306?
Комментарии:
1. Я думаю, вы должны разделить переменные DB_HOST и DB_PORT. Не могли бы вы попробовать поставить
DB_HOST: mysql-server
иDB_PORT: 3306
как переменные среды для вашего сервиса grafana? Кроме того, я не уверен на 100%, но вам, вероятно, нужно указать следующие переменные env :DB_NAME
,DB_USER
иDB_PASSWORD
2. Я думаю, что вы используете неправильные переменные среды. Так и должно быть
GF_DATABASE_HOST: mysql-server:3306
. Кроме того, вы должны иметь возможность подключиться к Grafana черезlocalhost:3000
.
Ответ №1:
До сих пор вы не заботились о сети двух контейнеров. Да, оба они предоставляют порт на хосте, но вы не пытаетесь получить к нему доступ. Вместо этого вы пытаетесь установить соединение из одного контейнера непосредственно в другой контейнер.
- Первым шагом является создание мостовой сети.
- Затем определите оба контейнера, которые будут подключены к этой сети.
- Наконец, вы можете использовать имя одного контейнера в качестве имени хоста для подключения из другого контейнера.