docker-compose 如何在php-fpm容器中使用curl访问apache容器中绑定的域名?

我在php-fpm容器中使用curl访问apache容器中绑定的域名时出现了报错:

cURL error 7: Failed to connect to b.local.com port 80: Connection refused (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)

我在apache的容器中绑定了多个域名:

  • a.local.com
  • b.local.com
  • c.local.com

a.local.com 在代码中使用CURL访问 b.local.com 时就出现了上面的错误。

docker-compose.yml

version: "3.7"

networks:
  backend:
    driver: bridge

services:
  apache2:
    build:
      context: ./apache2
      args:
        - MY_PHP_VERSION=7.4
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - E:/projects:/var/www
      - ./logs/apache2:/usr/local/apache2/logs
      - ./apache2/sites:/usr/local/apache2/sites
      - ./apache2/ssl:/usr/local/apache2/ssl
      - ./apache2/httpd.conf:/usr/local/apache2/conf/httpd.conf
    depends_on:
      - php-fpm
    networks:
      - backend
    environment:
      TZ: Asia/Shanghai

  php-fpm:
    build:
      context: ./php-fpm
      args:
        - MY_PHP_VERSION=7.4
    ports:
      - 9000:9000
    expose:
        - "9000"
    volumes:
      - ./php-fpm/php.ini/php7.4.ini:/usr/local/etc/php/php.ini
      - ./php-fpm/php-fpm.conf/php7.4-fpm.conf:/usr/local/etc/php-fpm.conf
      - ./logs/php-fpm:/usr/local/etc/php/logs
      - E:/projects/:/var/www
    networks:
      - backend
    environment:
      TZ: Asia/Shanghai
阅读 2.5k
2 个回答

楼主能不能靠点谱,自问自答一番,给了个链接就算了事,链接里其实也没准确讲清楚。

一 、在 docker 官网 compose 文档中的说明

(https://docs.docker.com/compose/compose-file/#networks)

  1. 服务名下的 networks 字段用于指定服务容器所属网络;
  2. networks 可以指定 alias,即对应服务在该对应网络下的别名;
  3. 相同网络下,其他容器可以用服务名或者别名访问对应服务。

二、举例

如下,以一个服务名为 some-service 举例,

  1. 服务 some-severce 属于网络 some-network,同网络下其他容器可以通过域名some-severcealias1alias3 访问它;
  2. 服务 some-severce 也属于网络 other-network,同网络下其他容器可以通过域名some-severcealias2 访问它;

    services:
      some-service:
        networks:
          some-network:
            aliases:
              - alias1
              - alias3
          other-network:
            aliases:
              - alias2
推荐问题
宣传栏