我有这样的docker-compose.yml(这里不是完整列表):

version: '2'

services:

  nginx:
    build: ./nginx/
    ports:
      - 8080:80
    links:
      - php
    volumes_from:
      - app
    networks:
      app_subnet:
        ipv4_address: 172.16.1.3

  php:
    build: ./php/
    expose:
      - 9000
    volumes_from:
      - app
    networks:
      app_subnet:
        ipv4_address: 172.16.1.4

    networks:
      app_subnet:
        driver: bridge
        ipam:
        config:
          - subnet: 172.16.1.0/24
          gateway: 172.16.1.1


docker-compose up之后,我得到了这样的错误:


仅当连接到时,才支持用户指定的IP地址
用户配置的子网的网络


所以我用docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_subnet创建子网

但这不能解决问题,因为docker-compose会动态创建名称为dev_app_subnet的子网。而且我的子网未使用-我遇到了同样的错误。
这样做的主要目的是为nginx服务分配静态IP-从etc / hosts文件打开我的项目Web URL。

最佳答案

[已解决]找到了解决方案。当指向网络时,我们应该使用标志“ external”来告诉compose已经创建了网络,并且应该将其带到外部(否则它将使用项目前缀即时创建):

networks:
  app_subnet:
    external: true


因此,在docker-compose之后,会将容器附加到现有的app_subnet
在此之前,必须创建子网:

docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_subnet

09-11 23:46