提问者:小点点

Docker-Compose:为什么我的webapp无法连接到MySQL?


我正在尝试连接两个正在运行的容器:(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: {}

共1个答案

匿名用户

看来idoit服务没有访问mysql数据库的网络权限。

db服务具有


networks:
      - backend

和idoit服务-不