# MANUAL TÉCNICO - GESTÃO DE STACKS NO PORTAINER

**Código:** ITGSUP 0009/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}

## 1. HISTÓRICO DE REVISÃO

> ⚠️ **REGRA DE OURO:**
> 1. **Autor:** João Pedro Toledo Gonçalves.
> 2. **Descrição:** Criação do documento.

| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |

## 2. OBJETIVO
Padronizar o deploy de aplicações (Stacks) no Portainer utilizando três métodos: Upload Manual, Templates de App e Repositório Git (GitOps Básico).

## 3. PRÉ-REQUISITOS
- [ ] Portainer instalado e acessível.
- [ ] Um arquivo `docker-compose.yml` válido E/OU Uma URL de repositório Git (GitHub/GitLab).

## 4. PASSO A PASSO (EXECUÇÃO)

**Etapa 1: Deploy via Web Editor (Rápido)**
1.  No menu lateral, clique em **Stacks** -> **Add stack**.
2.  Selecione a opção **Web editor**.
3.  **Name:** Dê um nome único (ex: `meu-nginx`).
4.  Cole o conteúdo do seu `docker-compose.yml` na área de texto.
5.  Clique em **Deploy the stack**.

**Etapa 2: Deploy via App Templates (Iniciantes)**
1.  No menu lateral, clique em **App Templates**.
2.  Selecione uma aplicação pronta (ex: "Wordpress" ou "Nginx").
3.  Preencha os campos (Nome, Senha do Banco).
4.  Clique em **Deploy the stack**.

**Etapa 3: Deploy via Repositório Git (Recomendado/GitOps)**
> 🚀 **MELHOR PRÁTICA:** Permite versionamento e "Single Source of Truth".

1.  Vá em **Stacks** -> **Add stack**.
2.  Selecione **Git Repository**.
3.  **Configuração:**
    *   **Repository URL:** `https://github.com/usuario/repo.git`
    *   **Repository Reference:** `main` (ou `refs/heads/main`).
    *   **Compose path:** `docker-compose.yml` (se estiver na raiz).
4.  **Authentication (Se privado):**
    *   Ative "Authentication".
    *   Use seu Username e, preferencialmente, um **Personal Access Token** (não sua senha).
5.  Ative **Automatic updates** (Opcional) para polling.
6.  Clique em **Deploy the stack**.

**Etapa 4: Edição e Updates**
*   **Web Editor:** Clique na stack -> Editor -> Update the stack.
*   **Git:** Faça o commit no Git -> No Portainer, clique em **"Pull and redeploy"** (ou aguarde o Auto-update).

## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)

**Problema 1: "Deployment error: Stack already exists"**
*   **Causa:** Já existe uma stack com esse nome (mesmo que parada).
*   **Solução:** Delete a stack antiga ou use outro nome.

**Problema 2: "Authentication failed" no Git**
*   **Causa:** Senha incorreta ou uso de senha ao invés de Token (GitHub exige Token).
*   **Solução:** Gere um PAT (Personal Access Token) no GitHub (Settings -> Developer Settings) e use como senha.

## 6. DADOS TÉCNICOS

| Campo | Valor | Descrição |
| :--- | :--- | :--- |
| **Padrão** | `docker-compose.yml` | Formato obrigatório |
| **Limit** | `Stack` | Equivalente a um projeto Docker Compose |

## 7. VALIDAÇÃO FINAL
- [ ] A stack aparece com status "Active"?
- [ ] Os conteineres subiram corretamente?
- [ ] Alterar o Git reflete no Portainer (se testado pull)?
