【问题标题】:Accessing Mysql docker running in a Vagrant guest from Mac Os host从 Mac Os 主机访问在 Vagrant 来宾中运行的 Mysql docker
【发布时间】:2020-03-08 14:04:43
【问题描述】:

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

在 Mac Os(主机)上运行 Ubuntu(来宾)的我的 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

在虚拟机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】:

    我对 Vagrantfile 和 docker-compose.yml 做了一些更改,并使用我的 vagrant 主机上的 db 客户端进行了尝试。有效。我不从命令行使用 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
    

    我可以从我的 osx 主机连接到 mysql,在 vagrant 下作为 docker 镜像运行。关闭 docker 容器并且连接失败。

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      相关资源
      最近更新 更多