php - 将使用 docker-compose 创建的容器连接到使用 docker run 创建的另一个容器
问题描述
我使用 docker-compose (php:7.2.20-apache) 创建了以下容器:
version: "3"
services
php72:
build:
context: .
ports:
- 80:80
volumes:
- ./www:/var/www/html
我使用 docker run 创建了以下容器:
docker run --name mysql5 -p 3306:3306 -v mysql5-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.27
我可以使用 MySQL Workbench 连接到 mysql,但是我在第一个容器(使用 docker-compose 创建的 php7)中的应用程序无法使用相同的连接凭据连接到数据库。
如何解决这个问题?
PS:这是对 MacOs 开发环境的测试
解决方案
您可以为他们管理一个用户定义的桥接器以相互通信,请参见下面的详细信息:
1.创建用户定义的桥梁
$ docker network create my-net
2. 将mysql容器链接到这个网络
$ docker run --name mysql5 -p 3306:3306 -v mysql5-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.27
$ docker network connect my-net mysql5
3.配置docker-compose
使用网络
version: "3"
services
php72:
build:
context: .
ports:
- 80:80
volumes:
- ./www:/var/www/html
networks:
default:
external:
name: my-net
然后,从此:
用户定义的网桥提供容器之间的自动 DNS 解析。
您可以使用服务名称或容器名称相互访问。
推荐阅读
- node.js - JS - Laravel Mix/NPM.js:变量 twemoji.parse 未找到/未定义
- go - 为什么gorm 没有在日志中报告插入错误?
- php - 如何在 Symfony 2 中全局更改 Monolog 的默认日期时区?
- c++ - 如何在 Visual Studio 中跳过 Debug Assertion Failed 并直接中断
- android - 如何将图像视图的边框与背景混合?
- c# - 返回正确格式化的时间
- html - 如何控制导航栏间距?
- python - 在其他方法定义中调用方法并且“对象没有属性”
- logic - 谓词逻辑量词和括号
- python - 在 Python 3 中迭代数组