Sequel Pro с Mysql в Docker
Я строю 2 docker-контейнера с помощью docker-compose. Я использую Docker на Mac, нет boot2docker.
version: '2'
services:
drupal-web:
image: drupal:latest
ports:
- "8080:80"
depends_on:
- mysql-server
links:
- mysql-server:mysql
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
Все отлично работает. Я успешно установил Drupal.
Проблема заключается в следующем: я хотел бы подключить SequelPro к моей БД, но я не могу подключиться к контейнеру mysql.
Я начинающий докер.
Ответы
Ответ 1
Вы забыли выставить свой порт БД на хост, поэтому просто добавьте
mysql-server:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
А затем подключитесь к базе данных в Sequel Pro, используя:
user: root
password: root
host: localhost
port: 3306
Если на вашем хосте уже работает локальная база данных mysql, измените порт
ports:
- "4306:3306"
а затем подключиться к порту 4306
вместо 3306
. Имейте в виду, из контейнера Drupal вы все равно будете использовать 3306
Ответ 2
Map host port 4306 (или любой другой доступный порт) для docker mysql 3306:
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
ports:
- "4306:3306"
Вы должны иметь возможность подключиться к docker mysql с помощью 127.0.0.1:4306
mysql -u drupal -h 127.0.0.1 -P 4306 -p
Ответ 3
В моем случае у меня проблема с mysql: 8, изменение на любые 5, и все в порядке
Ответ 4
Должно выглядеть немного больше:
version: '2'
services:
mysql-server:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
drupal-web:
image: drupal:latest
ports:
- "8080:80"
depends_on:
- mysql-server
links:
- mysql-server:mysql-server
environment:
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
(Я не уверен, что если определение переменных среды на глобальном уровне работает, возможно, кто-то, кто знает, может исправить мой ответ здесь и упростить его)
Как вы можете видеть, у вас есть 2 службы, mysql-сервер и drupal-web. Drupal-web связывает вашу службу базы данных. Обе службы имеют собственные переменные среды.