os contêineres parecem estar morrendo logo após serem iniciados
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
os contêineres parecem estar morrendo logo após serem iniciados
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
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:
docker-compose.yml.docker compose logs -f app e compartilhe a saída final. Assim será possível identificar exatamente o que está encerrando o container.