Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Criação de Redes via Docker Compose

Depois de ler todas as perguntas, gostaria de mencionar que o trecho do texto explicativo e do vídeo onde menciona a criação de rede (quando se está criando o arquivo docker-compose.yml) dá muito a entender que se trata somente da criação da seção do arquivo referente à instanciação da rede e não que a rede seria criado de fato caso não exista.

Isso certamente reflete na "pegadinha" do docker compose poder manipular somente um container, pq ele pode mesmo! Na minha cabeça teríamos que criar a rede primeiramente com um docker network create para depois referenciar no docker-compose.yml.

6 respostas

Rapaz ... Eu criei a rede antes do o comando docker network create e mesmo assim não consegui executar o build ... Tentei mudar endentação, mudei a ordem da criação da network, mudei o nome, para teste, hahaha e nada.

Segue meu erro ...

ERROR: The Compose file './docker-compose.yml' is invalid because: Unsupported config option for services.networks: 'production-network'

Consegui resolver ...

Coloquei o network fora de services, logo após a versão ...

version: '3'

networks:
  production-network:
    driver:
      bridge

services:

  nginx:
    build:
      dockerfile: ./docker/nginx.dockerfile
      context: .
    image: douglasq/nginx
    container_name: nginx
    ports:
      - "80:80"
    networks:
      - production-network
    depends_on:
      - "node1"
      - "node2"
      - "node3"

  mongodb:
    image: mongo
    networks:
      - production-network

  node1:
    build:
      dockerfile: ./docker/alura-books.dockerfile
      context: .
    image: douglasq/alura-books
    container_name: alura-books-1
    ports:
      - "3000"
    networks:
      - production-network
    depends_on:
      - "mongodb"

  node2:
    build:
      dockerfile: ./docker/alura-books.dockerfile
      context: .
    image: douglasq/alura-books
    container_name: alura-books-2
    ports:
      - "3000"
    networks:
      - production-network
    depends_on:
      - "mongodb"

  node3:
    build:
      dockerfile: ./docker/alura-books.dockerfile
      context: .
    image: douglasq/alura-books
    container_name: alura-books-3
    ports:
      - "3000"
    networks:
      - production-network
    depends_on:
      - "mongodb"

Olá Rudson e Chule, tudo bem com vocês? Na verdade como a documentação fala, o Docker-compose sempre vai criar uma rede padrão, e os serviços serão criados e adicionados a essa rede padrão, porém no momento que definimos outra rede:

networks:
  production-network:
    driver:
      bridge

Estamos indicando que sempre que subir os serviços deve ser criado uma rede com o nome production-network e também sobre o driver de rede bridge que é o padrão do Docker.

E realmente a rede é definida fora dos services já que é as redes não pertencem aos services.

Espero ter ajudado!

Obrigado Jonilson,

Meu ponto é somente que da forma como foi gravado os videos e colocado a informação abaixo do vídeo dá a impressão, como disse, que se trata da necessidade de ter uma seção para redes no arquivo e não à criação da rede propriamente dita.

Pelo menos é o que entendi assistindo/lendo.

solução!

Entendi Rudson, mas você entendeu tudo certinho? Qualquer coisa é só falar!

Sim, entendi.. o que tive como objetivo dessa postagem é sugerir uma edição mais clara pelo menos do texto abaixo do vídeo se possível.

Abraço.