docker run -p 5000:5000 vitorlr/fake-shop-desafio
(com um Postgres ao lado — instruções abaixo) ou o
repositório completo.
E-commerce em Flask + PostgreSQL com o ciclo de entrega completo: CI/CD no GitHub Actions, imagem no Docker Hub e deploy automático em Kubernetes com 10 réplicas.
Código da loja em src/
Build da imagem e push com tags v{nº} + latest
vitorlr/fake-shop-desafio
Apply no cluster via kubeconfig (secret)
Flask + Gunicorn atrás de um Service LoadBalancer
(80 → 5000). Migrations Alembic no entrypoint de cada pod;
métricas Prometheus expostas em /metrics.
PostgreSQL 13 com Service ClusterIP — visível só
dentro do cluster, resolvido por DNS pelo nome
postgre. Todas as réplicas compartilham o mesmo
banco (carrinho por cookie funciona em qualquer uma).
# rede + banco + loja
docker network create fakeshop
docker run -d --name pg --network fakeshop \
-e POSTGRES_USER=ecommerce -e POSTGRES_PASSWORD=Pg1234 -e POSTGRES_DB=ecommerce \
postgres:13.16
docker run -d --name loja --network fakeshop -p 5000:5000 \
-e DB_HOST=pg vitorlr/fake-shop-desafio
Loja em http://localhost:5000 · métricas em /metrics. As migrations rodam sozinhas no entrypoint.
# cluster local com kind (ou minikube/k3d/cloud) kind create cluster --name fakeshop kubectl apply -f k8s/deployment.yaml kubectl get pods -w # aguarde postgre + 10 réplicas em Running kubectl port-forward svc/fakeshop 8080:80 # loja em http://localhost:8080
Guia completo, incluindo desenvolvimento local em Python e solução de problemas comuns, no arquivo COMO-RODAR.md do repositório.