Falta pouco!

0 dias

0 horas

0 min

0 seg

1
resposta

Docker up -d

os contêineres parecem estar morrendo logo após serem iniciados

1 resposta

Oi, Sifronio, tudo bem?

Pelo que você disse, há alguns pontos a verificar:

Estrutura do docker-compose.yml:

Um erro comum é a indentação incorreta da seção app. O arquivo deve estar assim (observe o alinhamento):

services:
  postgres:
    image: postgres:16
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
      POSTGRES_DB: root
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U root -d root"]
      interval: 5s
      timeout: 5s
      retries: 20

  app:
    image: golang:1.22
    working_dir: /app
    command: ["sh", "-c", "go mod download && go run main.go"]
    volumes:
      - ./:/app
    ports:
      - "8080:8080"
    depends_on:
      postgres:
        condition: service_healthy
    restart: on-failure

Esse ajuste garante que a aplicação só inicie quando o Postgres estiver pronto.

Logs para confirmar a causa:

Rode os comandos abaixo para ver por que o container cai:

docker compose logs -f app
docker compose logs -f postgres
  • Se aparecer erro de conexão ao banco, é porque o app subiu antes do Postgres estar disponível.
  • Se for erro de porta, pode ser que a 8080 já esteja em uso.

Volumes do Postgres:

Se o banco já tiver dados antigos ou corrompidos, o container pode falhar. Nesse caso, limpe tudo antes de tentar novamente:

docker compose down -v
docker compose up -d --build

Porta em conflito:

Verifique se não há outro processo usando a 8080. Para testar, altere no docker-compose.yml para:

ports:
  - "8081:8080"

e acesse http://localhost:8081/alunos.

Próximos passos:

  1. Confirme a indentação do seu docker-compose.yml.
  2. Rode docker compose logs -f app e compartilhe a saída final. Assim será possível identificar exatamente o que está encerrando o container.
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!