⚠️ Página de apresentação (estática). A Fake Shop é uma aplicação Flask + PostgreSQL implantada em Kubernetes — não há como executá-la em hospedagem estática. Esta página documenta a arquitetura e ensina a rodar. Atalho: docker run -p 5000:5000 vitorlr/fake-shop-desafio (com um Postgres ao lado — instruções abaixo) ou o repositório completo.

Fake Shop

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.

O pipeline

01push na main

Código da loja em src/

02CI — GitHub Actions

Build da imagem e push com tags v{nº} + latest

03Docker Hub

vitorlr/fake-shop-desafio

04CD — deploy

Apply no cluster via kubeconfig (secret)

Dentro do cluster

kubernetes

fakeshop — 10 réplicas

Flask + Gunicorn atrás de um Service LoadBalancer (80 → 5000). Migrations Alembic no entrypoint de cada pod; métricas Prometheus expostas em /metrics.

postgre

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).

Como rodar — Docker (2 minutos)

# 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.

Como rodar — Kubernetes

# 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.