2016-10-17 4 views
1

У меня есть такая Докер-compose.yml (не полный список здесь):Docker составляет YML статического IP адресации

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 После я получил такую ​​ошибку:

User specified IP address is supported only when connecting to networks with user configured subnets

Так что я m создание подсети с docker network create --gateway 172.16.1.1 --subnet 172.16.1.0/24 app_subnet

Но это не решает проблему, потому что docker-compose создает подсеть с именем dev_app_subnet на лету. И моя подсеть не используется - я получаю ту же ошибку. Основная цель этого - назначить статический IP-адрес для службы nginx - открыть URL-адрес моего проекта из файла etc/hosts.

ответ

2

[SOLVED] Обнаружено решение. При наведении на сеть, мы должны использовать флаг «внешний» говорить сочинить, что сеть уже создана и должны быть приняты снаружи (в противном случае он будет создан на лету с префиксом проекта):

networks: 
    app_subnet: 
    external: true 

Итак, после того, докер-Compose присоединит контейнеры к существующим app_subnet Перед тем, что подсеть должна быть создана:

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

он работает на docker compose yml file 'version: '3' ' –

0

чтобы быть конкретным, если вы используете стек докер развернуть развернуть роя кластера. И вам нужно указать область подсети как «роя»:

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

в Докер-compose.yml, необходимо указать внешнюю сеть, как:

networks: default: external: name: etl_subnet

Используйте его по умолчанию ,

Смежные вопросы