如何从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服务器?
我对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容器,连接失败。