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

Docker compose não funciona

Ola pessoal

Na lição 6 acompanhei o vídeo fazendo toda a configuração do docker-compose.yml mas ao fazer o build dá o erro abaixo:

ERROR: The Compose file '.\docker-compose.yml' is invalid because:
Unsupported config option for services.nginx: 'node1'

Estou começando no Docker e sinceramente não consegui ver o por que deste erro. Porem, pesquisei algo e vi que se trata de atualizar a versão do docker-compose. Será que seria isso ? Está assim minha versão do docker-compose:

docker-compose version 1.16.1, build 6d1ac219
docker-py version: 2.5.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.2j  26 Sep 2016

Alguem tem alguma dica?

Obrigado

6 respostas

Ola Joao,

Exato, esse erro costuma ocorrer quando temos alguma versao do compose muito antiga, mas pelo que vejo, sua versao nao seria tao antiga assim. Consegue postar aqui seu docker-compose para que possamos analisar?

Olá Rafael.. sim claro.. segue abaixo. Mas onde está version: 3 eu já tentei com version: 2 mas mesmo assim deu erro.

version: '3'
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"

networks: 
    production-network:
        driver: bridge

Pesquisei alguns sites sobre atualização do docker-compose mas os links que eles postam se refere ao docker completo, ou seja, isso eu já instalei na minha máquina.

Ola Joao,

Acredito que o problema seja a indentaçao. No arquivo yaml se a indentaçao nao estiver certinha acontecem esses erros. Repare que a declaraçao do Nginx nao esta no mesmo nivel de indetaçao dos demais serviços (mongodb, node1, node3, etc). Fiz alguns ajustes com relaçao a indentaçao e consegui rodar a aplicaçao, segue como ficou meu arquivo:

version: '2.0'
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"

networks: 
    production-network:
        driver: bridge

Muito obrigado Rafael.. como se diz "na mosca " :) Nunca que eu ia pensar que o problema era indentação. Rodei com sucesso o docker-compose e depois docker-compose up porém após executar o docker-compose up ocorre um erro no momento de criar o nginx, algo de permissão negada. Abaixo o erro.

Creating network "aluradockercap06_production-network" with driver "bridge"
Creating aluradockercap06_mongodb_1 ...
Creating aluradockercap06_mongodb_1 ... done
Creating alura-books-2 ...
Creating alura-books-3 ...
Creating alura-books-1 ...
Creating alura-books-1
Creating alura-books-2
Creating alura-books-3 ... done
Creating nginx ...
Creating nginx ... error

ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (f3c80e9
6383dbcf82af7f0bbe361eef9406a65a5954193685c2999eb92778e1f): Error starting userland proxy: Bind for 0.0.0.0:80: unexpect
ed error Permission denied

ERROR: for nginx  Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (f3c80e9
6383dbcf82af7f0bbe361eef9406a65a5954193685c2999eb92778e1f): Error starting userland proxy: Bind for 0.0.0.0:80: unexpect
ed error Permission denied
ERROR: Encountered errors while bringing up the project.

Tem alguma dica?

obrigado pelo retorno

Olá João,

Uma sugestão, tente trocar a porta do Nginx para uma diferente de 80 na sua máquina local, por exemplo a 8080.

ports:
            - "8080:80"

Só depois para acessar a aplicação teria que colocar essa porta :8080 no browser

solução!

OK..Rafael.. obrigado pelas dicas. Aparentemente executou o comando docker-compose up. Vou fazer testes e terminar a lição.

Abraço