# Deploy ## Fluxo ``` 1. Build Docker ──▶ 2. Push ECR ──▶ 3. Atualizar SHA no Pulumi ──▶ 4. pulumi up ``` --- ## 1. Build da Imagem Docker Execute a partir da raiz do repositório: ```bash docker build code/ --platform linux/amd64 -t ``` --- ## 2. Push para o ECR ### Autenticar no ECR ```bash aws ecr get-login-password --region \ | docker login --username AWS --password-stdin .dkr.ecr..amazonaws.com ``` ### Tag e push ```bash docker tag :latest \ .dkr.ecr..amazonaws.com/:latest docker push .dkr.ecr..amazonaws.com/:latest ``` --- ## 3. Obter o SHA da imagem publicada Após o push, obtenha o digest da imagem no ECR: ```bash aws ecr describe-images \ --repository-name \ --region \ --query 'sort_by(imageDetails, &imagePushedAt)[-1].imageDigest' \ --output text ``` O retorno será no formato `sha256:xxxxxxxx...`. --- ## 4. Atualizar o SHA no Pulumi Edite [infra/ecs_alb/Pulumi.Inovyo.yaml](../infra/ecs_alb/Pulumi.Inovyo.yaml) e atualize o campo `ecr_image_digest` com o valor obtido no passo anterior: ```yaml ecr_image_digest: sha256: ``` --- ## 5. Aplicar com Pulumi ```bash cd infra/ecs_alb pulumi up --stack Inovyo ``` Para visualizar as mudanças antes de aplicar: ```bash pulumi preview --diff --stack Inovyo ``` --- ## Configuração do Container O `entrypoint.sh` inicia dois processos: 1. **FastAPI** (background): `uvicorn app.api:app --host 0.0.0.0 --port 8000` 2. **Streamlit** (foreground): `streamlit run app/front.py --server.port 8501 --server.address 0.0.0.0 --server.headless true` Após o deploy, a aplicação fica acessível pelo DNS do ALB: - **API:** `http://:8000` - **Streamlit:** `http://:8501`