Доступ к Mysql docker в гостевой системе Vagrant с хоста Ma c Os - PullRequest
0 голосов
/ 08 марта 2020

Как я могу получить доступ к Mysql через docker, запущенный в гостевой системе Vagrant с хоста Ma c Os?

Мой файл Vagrant для запуска Ubuntu (гостевой) на Ma c Os ( хост)

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/bionic64"
  config.vm.provision "docker"
  config.vm.network :forwarded_port, guest: 80, host: 8000
  config.vm.network :forwarded_port, guest: 3306, host: 33060
  config.vm.provision :shell, path: "bootstrap.sh"
end

Тогда я

vagrant up

И

vagrant ssh

Внутри ВМ cd /vagrant я могу запустить docker-compose up -d с:

version: '3.3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress

volumes:
  db_data: {}

И я также могу получить доступ к mysql из Ubuntu (Vagrant guest):

mysql -uwordpress -pwordpress -h 172.18.0.2

IP-адрес сервера был дан docker inspect vagrant_db_1

Но как можно Я получаю доступ к тому же mysql серверу с хоста Ma c Os?

1 Ответ

0 голосов
/ 13 марта 2020

Я сделал несколько изменений в Vagrantfile и docker -compose.yml и попробовал его с помощью клиента db с моего хоста vagrant. Это сработало. Я не использую mysql или mysql из командной строки. поэтому я не могу сказать, как использовать это решение из командной строки, но оно должно быть очень простым. Вам нужно изменить ссылку на хост mysql на localhost: 3306.

Изменения в моем файле Vagrant (добавлен ip 192.168.50.110, я думаю, что вы можете удалить его после тестирования и сопоставить порт 3306).

Vagrant.configure("2") do |config|  
config.vm.box = "hashicorp/bionic64"  
config.vm.provision "docker"  
config.vm.network "private_network", ip: "192.168.50.110",  
    virtualbox__intnet: true  
config.vm.network :forwarded_port, guest: 80, host: 8000  
config.vm.network :forwarded_port, guest: 3306, host: 3306  
# config.vm.provision :shell, path: "bootstrap.sh"  
end  

docker -compose.yml (снова сопоставленный порт 3306).

version: '3.3'  

services:  
db:  
image: mysql:5.7  
volumes:  
    - db_data:/var/lib/mysql  
ports:  
    - "3306:3306"  
restart: always  
environment:  
    MYSQL_ROOT_PASSWORD: somewordpress  
    MYSQL_DATABASE: wordpress  
    MYSQL_USER: wordpress  
    MYSQL_PASSWORD: wordpress  

wordpress:  
depends_on:  
    - db  
image: wordpress:latest  
ports:  
  - "8000:80"  
restart: always  
environment:  
    WORDPRESS_DB_HOST: db:3306  
    WORDPRESS_DB_USER: wordpress  
    WORDPRESS_DB_PASSWORD: wordpress  
    WORDPRESS_DB_NAME: wordpress  

volumes:
db_data: {}

Из моего клиента БД, работающего на ноутбуке (бродячий хост), использовались следующие настройки:

host - localhost  
port - 3306  
db/user/password - wordpress/wordpress/wordpress

Я могу подключиться к mysql с моего хоста osx, работая как docker изображение под бродягой. завершение работы контейнера docker и соединение не установлено.

...