3
respostas

Erro na subida docker-compose build

Ao digitar o comando docker-compose build o seguinte erro aparece:

abilio@abilio-VirtualBox:~/Downloads/alura-docker-cap06/docker$ docker-compose build
mongodb uses an image, skipping
Building nginx
Step 1/8 : FROM nginx:latest
latest: Pulling from library/nginx
54fec2fa59d0: Pull complete
4ede6f09aefe: Pull complete
f9dc69acb465: Pull complete
Digest: sha256:86ae264c3f4acb99b2dee4d0098c40cb8c46dcf9e1148f05d3a51c4df6758c12
Status: Downloaded newer image for nginx:latest
 ---> 602e111c06b6
Step 2/8 : MAINTAINER Douglas Quintanilha
 ---> Running in 7eccbaa12be8
Removing intermediate container 7eccbaa12be8
 ---> 4be91745b60a
Step 3/8 : COPY /public /var/www/public
ERROR: Service 'nginx' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder463981616/public: no such file or directory
abilio@abilio-VirtualBox:~/Downloads/alura-docker-cap06/docker$ ^C

Meu arquivo nginx.dockerfile esta dessa forma:


FROM nginx:latest
MAINTAINER Douglas Quintanilha
COPY /public /var/www/public
COPY /docker/config/nginx.conf /etc/nginx/nginx.conf
RUN chmod 755 -R /var/www/public
EXPOSE 80 443
ENTRYPOINT ["nginx"]
# Parametros extras para o entrypoint
CMD ["-g", "daemon off;"]
3 respostas

Olá Abilio, tudo bem? Aparentemente seu arquivo nginx.dockerfile está correto. Porém o docker informa que o erro aconteceu no momento de fazer a cópia da pasta /public atual para dentro da pasta /var/www/public do container. Então sendo assim você poderia disponibilizar o seu arquivo docker-compose.yml pra gente verificar, de ante mão isso pode está acontecendo por causa do context que precisamos definir como . (ponto) indicando que o contexto que esse nginx.dockerfile será executado é o contexto root ou seja essa pasta raiz que contém a pasta public, routes, models e etc.

Você pode também compara e verificar se seu arquivo está igual a esse:

version: '3'
services:
  nginx:
    build:
      dockerfile: ./docker/nginx.dockerfile
      context: .
    image: jonilsonds9/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: jonilsonds9/alura-books
    container_name: alura-books-1
    ports:
      - "3000"
    networks: 
      - production-network
    depends_on:
      - "mongodb"

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

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

networks:
  production-network:
    driver: bridge

Fico aguardando retorno!

Jonilson meu docker-compose.yml esta da seguinte forma:

version: '3' services: nginx: build: dockerfile: /home/abilio/Downloads/alura-docker-cap06/docker/nginx.dockerfile context: . image: douglasq/nginx container_name: nginx ports:

        - "80:80"
    networks: 
        - production-network

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

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

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

networks: production-network: driver: bridge

Abilio, você poderia usar o caminho relativo (./docker/nginx.dockerfile) do arquivo nginx.dockerfile como mencionei no post anterior:

version: '3'
services:
  nginx:
    build:
      dockerfile: ./docker/nginx.dockerfile
      context: .
    image: jonilsonds9/nginx
    container_name: nginx
<restante do código aqui>

Se não também não surtir efeito sugiro você fazer o build da imagem e usar essa, pode está acontecendo algum problema na imagem, no meu caso eu criar a minha imagem como você pode perceber na linha:

    image: jonilsonds9/nginx

E fala pra gente o resultado!