Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Docker compose não funciona como esperado

Ambiente: Ubuntu 22.04.4 Docker 27.1.1 Docker Compose Plug In 2.29.1

Docker compose instalado como plugin segundo documentação oficial: https://docs.docker.com/compose/install/linux/#install-using-the-repository

Comando "docker-compose up" não é reconhecido, tentando o comando "docker compose up" ocorre o erro "services.build must be a mapping" na execução do arquivo abaixo, como se não aceitasse o diretório local como parâmetro do build :

version: "3.9" services: server: build: . container_name: allbooks ports: - 8080:3000

Aguardo alguma sugestão. Obrigado

Att.

Geovane

1 resposta
solução!

Oi, Geovane!

Entendo a frustração quando as coisas não funcionam como esperado. Vamos resolver isso!

Primeiro, parece que você está usando a versão correta do Docker e Docker Compose. O problema que você está enfrentando com o comando "docker compose up" pode estar relacionado à sintaxe ou à estrutura do seu arquivo docker-compose.yml.

O erro "services.build must be a mapping" geralmente indica que o Docker Compose não está conseguindo interpretar corretamente o caminho para o diretório de build. Vamos verificar algumas coisas:

  1. Estrutura do Arquivo: Certifique-se de que a indentação e a estrutura do seu arquivo docker-compose.yml estão corretas. YAML é muito sensível à indentação. Aqui está um exemplo do seu arquivo com a indentação correta:

    version: "3.9"
    services:
      server:
        build: .
        container_name: allbooks
        ports:
          - "8080:3000"
    
  2. Localização do Arquivo: Certifique-se de que o arquivo docker-compose.yml está no mesmo diretório onde você está executando o comando docker compose up.

  3. Diretório de Build: Verifique se o diretório atual (representado por .) contém um Dockerfile. O Docker Compose precisa desse arquivo para construir a imagem.

  4. Permissões: Verifique se você tem permissões adequadas para acessar o diretório e os arquivos necessários.

Aqui está um exemplo prático de como você pode testar isso:

  1. Crie um diretório chamado allbooks e dentro dele crie um arquivo Dockerfile simples, por exemplo:

    FROM node:14
    WORKDIR /app
    COPY . .
    RUN npm install
    CMD ["npm", "start"]
    
  2. No mesmo diretório, crie o arquivo docker-compose.yml com o conteúdo:

    version: "3.9"
    services:
      server:
        build: .
        container_name: allbooks
        ports:
          - "8080:3000"
    
  3. Navegue até o diretório allbooks e execute o comando docker compose up.

Se ainda assim o problema persistir, pode ser útil verificar a documentação oficial ou buscar por exemplos específicos de configuração de Docker Compose para projetos Node.js, que podem fornecer mais insights.

Bons estudos!