Compose: services.xxx.networks contém {"ExtNet": {"ipv4_address": "192.168.1.11"}}, que é um tipo inválido, deveria ser uma string

Criado em 13 mar. 2017  ·  4Comentários  ·  Fonte: docker/compose

Ambiente:

`` `versão docker-compose
docker-compose versão 1.11.2, compilação dfed245
versão docker-py: 2.1.0
Versão CPython: 2.7.5
Versão OpenSSL: OpenSSL 1.0.1e-fips 11 de fevereiro de 2013

```uname -srvmpio
Linux 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux```

Cenário:

version: '2.1'

services:
  xxx:
    image: xxx:latest
    networks:
      - ExtNet:
          ipv4_address: 192.168.1.11
      - IntNet

networks:
  ExtNet:
    driver: macvlan
    driver_opts:
      parent: enp3s0
    ipam:
      config:
        - gateway: 192.168.1.1
          ip_range: 192.168.1.10/28
          subnet: 192.168.1.0/24
  IntNet:
    internal: True
    driver: bridge
    ipam:
      config:
        - ip_range: 10.0.0.0/16
          subnet: 10.0.0.0/16

Erro:

services.xxx.networks contains {"ExtNet": {"ipv4_address": "192.168.1.11"}}, which is an invalid type, it should be a string

# Tried docker compose yaml version 2.0, 2.1 and 3.0.

Esperado:

  • A capacidade de atribuir IP estático de ExtNet ao contêiner docker xxx no exemplo acima.
kinquestion

Comentários muito úteis

Na verdade, essa segunda configuração também está incorreta. networks é uma lista de strings ou um mapeamento (esse é o nome YAML para dict do python). https://docs.docker.com/compose/compose-file/compose-file-v2/#networks

Por exemplo, este é um formato válido para a configuração desejada:

services:
  xxx:
    image: xxx:latest
    networks:
      ExtNet:
        ipv4_address: 192.168.1.11
      IntNet: {}

Todos 4 comentários

Atualizar

  • Adicionar ExtNet sozinho ao contêiner parece estar OK:
services:
  xxx:
    image: xxx:latest
    networks:
      - ExtNet:
          ipv4_address: 192.168.1.11

Parece que se um dos itens em "services.xxx.networks" for uma string (neste caso, "IntNet"), ele espera que todos os itens sejam uma string.
Seria possível alterar "services.xxx.networks" para esperar tupla?

Na verdade, essa segunda configuração também está incorreta. networks é uma lista de strings ou um mapeamento (esse é o nome YAML para dict do python). https://docs.docker.com/compose/compose-file/compose-file-v2/#networks

Por exemplo, este é um formato válido para a configuração desejada:

services:
  xxx:
    image: xxx:latest
    networks:
      ExtNet:
        ipv4_address: 192.168.1.11
      IntNet: {}

Legal que funciona. Muito obrigado :)

Esta página foi útil?
0 / 5 - 0 avaliações