从Mac Os主机访问在Vagrant来宾中运行的Mysql docker

问题描述 投票:0回答:1

如何从Mac Os主机通过在Vagrant来宾中运行的docker访问Mysql?

要在Mac OS(主机)上运行Ubuntu(来宾)的My Vagrant文​​件

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

在VM 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: {}

而且我也可以从Ubuntu(Vagrant guest)访问mysql:

mysql -uwordpress -pwordpress -h 172.18.0.2

服务器IP由docker inspect vagrant_db_1指定

但是如何从Mac Os主机访问相同的mysql服务器?

mysql docker vagrant
1个回答
0
投票

我对Vagrantfile和docker-compose.yml进行了很少的更改,并使用了我的vagrant主机上的数据库客户端对其进行了尝试。有效。我不从命令行使用mysql或mysql。因此,我不能说如何从命令行使用此解决方案,但它应该非常简单。您需要将对mysql主机的引用更改为localhost:3306。

我的流浪者文件更改,(添加了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

我能够从我的osx主机连接到mysql,在vagrant下作为docker映像运行。关闭docker容器,连接失败。

© www.soinside.com 2019 - 2024. All rights reserved.