代码之家  ›  专栏  ›  技术社区  ›  vidihermes

无法连接到在Vagrant VM中作为Docker容器安装的MySql

  •  0
  • vidihermes  · 技术社区  · 6 年前

    我尝试用vagrant设置本地VPS,并在这个vm中安装了docker。

    这是我的流浪汉档案

    Vagrant.configure("2") do |config|
    
        config.vm.box = "xenial64"
    
        config.vm.network :forwarded_port, guest: 80, host: 8080
    
        config.vm.provision "docker"
    
        config.vm.provision :shell, :path => "install.sh"
    
        config.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777", "fmode=777"]
    
        config.vm.provider "virtualbox" do |vb|
            vb.memory = "1024"
            vb.cpus = 2
    
            vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
    
        end  
    end
    

    在我处理完这个文件后,我用ssh连接到其中,然后安装docker compose 并运行docker compose。yml公司( here is my lemp stack source ) 一切正常。我用索引进行了测试。php我甚至运行了opencart,而且它运行正常。

    但是,问题是:我无法像往常一样通过mysql WorkBench或SqlYog连接mysql数据库:

    SSH Tunnel :
    SSH Host Address : 127.0.0.1
    Username : vagrant
    SSH Port : 2222
    Password : vagrant
    
    MySQL :
    Mysql Host Address : localhost
    Port : 3306
    username : root
    password : root
    

    我尝试将mySql主机地址更改为172.18.0.2,这是docker内部mySql容器的ip地址 docker inspect <container id> 而且不起作用。

    这是我的docker作曲。yml:

    version: "2"
    services:
      nginx:
        image: nginx
        restart: always
        ports:
          - 8080:80
        volumes:
          - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
          - ./nginx/log:/var/log/nginx
        volumes_from:
          - fpm
        depends_on:
          - fpm
          - db
        links:
          - db
      fpm:
        build: ./fpm
        restart: always
        volumes:
          - ./app/public:/var/app/public
          - ./app/storage:/var/app/storage
        links:
          - db
      db:
        image: mysql:5.7
        ports:
          - 3306:3306
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - MYSQL_DATABASE=application
        restart: always
    

    谁能帮帮我吗?非常感谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   vidihermes    6 年前

    现在我再次回答我自己的问题。。 出于开发目的,我似乎不需要ssh变成流浪汉,

    假设我在docker compose中有此设置。yml:

    dl_db: image: mysql:5.7 ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=oemjih restart: always

    然后我把这一行放在我的流浪汉档案里 config.vm.network :forwarded_port, guest: 3306, host: 3306 在我的sqlyog面板中,我只是通过tcp/ip访问数据库 port:3306 当我在没有ssh的vagrantfile中映射为主机端口时: MySql Host Address: localhost username : root password : root port : 3306

    我已经把它放在这里了: https://github.com/vidihermes/Docker-LEMP-Stack