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

时间:2018-03-15 11:22:45

标签: mysql docker vagrant docker-compose devops

我尝试使用vagrant设置本地VPS,并在此虚拟​​机中安装了docker并进行了设置。

这是我的Vagrantfile

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

并且在我使用此文件后,我将其插入其中然后安装docker-compose 并运行我的docker-compose.yml(here is my lemp stack source) 一切正常我用index.php测试过,我甚至运行了opencart,但它确实有用。

但是,问题在于:我无法像往常一样通过使用此crendential来连接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-compose.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 个答案:

答案 0 :(得分:0)

现在我又回答了我自己的问题.. 出于发展的目的,似乎我不需要ssh into vagrant,

让我说我在docker-compose.yml中有这个设置:

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

然后我把这行放在我的vagrantfile中 config.vm.network :forwarded_port, guest: 3306, host: 3306 从我的sqlyog面板我只是通过带有port:3306的tcp / ip访问数据库,因为我在没有ssh的情况下映射到我的vagrantfile中的主机端口: MySql Host Address: localhost username : root password : root port : 3306

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