【发布时间】:2021-04-16 14:04:56
【问题描述】:
我正在尝试连接两个正在运行的容器:(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: {}
【问题讨论】:
-
认为您需要在两个容器中拥有相同的网络(后端)。
-
@Mike'Pomax'Kamermans 这实际上不是我的 php 代码。我对 webapp 的代码进行了逆向工程,试图了解它失败的原因(因为它没有抛出任何错误消息),原因就是这个。
-
@NigelRen 正如我在下面的答案中指出的那样,网络更像是我删除的错字。默认的 docker-compose 网络将完成此任务。
标签: php mysql docker docker-compose