我正在尝试连接两个正在运行的容器:(1)一个webapp和(2)一个使用docker Compose的mysql db。我设置了前面提到的docker-compose.yml
,但我的webapp无法打开到MySQL的套接字。更具体地说,这个php@fsockopen函数抛出一个错误(第二种情况)。docker-compose配置有问题吗?
注意:idoit是webapp的名称
php案例
if (@fsockopen($l_dbHost, $l_t, $t_errno, $t_errstr, 5)) {
$l_success = true;
$l_message = "CONNECTED";
$l_dbPort = $l_t;
} else {
$l_success = false;
$l_message = "ERROR (" . $t_errno . ")";
}
docker-compose.yml
version: "3"
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: ****
MYSQL_DATABASE: ****
MYSQL_USER: ****
MYSQL_PASSWORD: ****
ports:
- '3306:3306'
expose:
- '3306'
volumes:
- db_data:/var/lib/mysql
idoit:
depends_on:
- db
build:
context: .
dockerfile: Dockerfile
ports:
- "8000:80"
restart: always
environment:
IDOIT_DB_HOST: db:3306
IDOIT_DB_USER: ****
IDOIT_DB_PASSWORD: ****
IDOIT_DB_NAME: ****
volumes:
db_data: {}
看来idoit
服务没有访问mysql数据库的网络权限。
db服务具有
networks:
- backend
和idoit服务-不