在docker-compose的extra_hosts选项中解析容器名称

我需要从另一个容器中卷曲我的API.
容器1称为nginx
容器2称为fpm

我需要能够扑向FPM容器并卷曲nginx容器.

配置:

services:

  nginx:
    build:
      context: .
      dockerfile: ./docker/nginx/Dockerfile
    volumes:
      - ./docker/nginx/conf/dev/api.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 8080:80
    links:
      - fpm


  fpm:
    build:
      context: .
      dockerfile: ./docker/fpm/Dockerfile
    volumes:
      - .:/var/www/html
      - ./docker/fpm/conf/dev/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
      - ./docker/fpm/conf/dev/api.ini:/usr/local/etc/php/conf.d/api.ini
    env_file:
      - ./docker/mysql/mysql.env
      - ./docker/fpm/conf/dev/fpm.env
    links:
      - mysql
    shm_size: 256M
    extra_hosts:
      - myapi.docker:nginx

我最初的想法是将它放在extra_hosts选项中,例如:

extra_hosts:
  - myapi.docker:nginx

但是docker-compose up失败了:

ERROR: for apiwip_fpm_1 Cannot create container for service fpm: invalid IP address in add-host: “nginx”

我已经看到了一些使用docker网络配置的人的例子,但是仅仅解析地址似乎是最重要的.

我如何解析/评估容器的IP地址,而不是直接通过容器传递它?

最佳答案
    services:

      nginx:
        build:
          context: .
          dockerfile: ./docker/nginx/Dockerfile
        volumes:
          - ./docker/nginx/conf/dev/api.conf:/etc/nginx/conf.d/default.conf
        ports:
          - 8080:80
        networks:
          my_network:
            aliases:
              - myapi.docker
              - docker_my_network

      fpm:
        build:
          context: .
          dockerfile: ./docker/fpm/Dockerfile
        volumes:
          - .:/var/www/html
          - ./docker/fpm/conf/dev/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
          - ./docker/fpm/conf/dev/api.ini:/usr/local/etc/php/conf.d/api.ini
        env_file:
          - ./docker/mysql/mysql.env
          - ./docker/fpm/conf/dev/fpm.env
        links:
          - mysql
        shm_size: 256M
        extra_hosts:
          - myapi.docker:nginx
        networks:
          - my_network

      networks:
        my_network:
          driver: bridge

>添加自定义网络并将容器添加到该网络
>默认情况下,如果从fpm卷曲nginx容器,则将卷曲localhost,因此我们需要添加别名,使其与nginx配置中的服务器名称相同
>使用此解决方案,您可以从fpm容器中卷曲myapi.docker

@edward让我知道此解决方案是否对您有用

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...