Adiciona estrutura inicial do projeto NestJS com Docker, incluindo Dockerfile, docker-compose, scripts de deploy e configuração do Nginx.
This commit is contained in:
135
README.md
135
README.md
@@ -1,2 +1,135 @@
|
||||
# docker-nest-js
|
||||
# NestJS Multi-Projeto Stack — Portainer
|
||||
|
||||
## Estrutura no Host (VPS)
|
||||
|
||||
```
|
||||
/home/deploy/
|
||||
├── nest-stack/ ← este repositório
|
||||
│ ├── Dockerfile
|
||||
│ ├── docker-compose.yml
|
||||
│ ├── nginx/nginx.conf
|
||||
│ ├── scripts/
|
||||
│ │ ├── start.sh ← entrypoint do container
|
||||
│ │ └── deploy.sh ← deploy dentro do container
|
||||
│ └── host-deploy.sh ← atalho para rodar do host
|
||||
│
|
||||
└── projects/ ← SEUS PROJETOS (volume montado)
|
||||
├── projeto1/ ← git clone aqui
|
||||
└── projeto2/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Setup inicial
|
||||
|
||||
### 1. No servidor (VPS), clone este repo
|
||||
|
||||
```bash
|
||||
git clone <este-repo> /home/deploy/nest-stack
|
||||
mkdir -p /home/deploy/projects
|
||||
chmod +x /home/deploy/nest-stack/host-deploy.sh
|
||||
```
|
||||
|
||||
### 2. No Portainer → Stacks → Add Stack
|
||||
|
||||
- **Name:** `nestjs-stack`
|
||||
- **Build method:** Repository (aponta para este repo)
|
||||
— OU —
|
||||
- **Build method:** Upload → sobe o `docker-compose.yml`
|
||||
|
||||
### 3. Clique em **Deploy the stack**
|
||||
|
||||
O container vai:
|
||||
- Buildar a imagem (Nginx + Node + PM2)
|
||||
- Montar `/home/deploy/projects` como volume
|
||||
- Subir projetos que já tiverem build em `dist/`
|
||||
|
||||
---
|
||||
|
||||
## Adicionando um novo projeto
|
||||
|
||||
```bash
|
||||
# No HOST (fora do container)
|
||||
cd /home/deploy/projects
|
||||
git clone https://github.com/seu-usuario/meu-projeto.git projeto1
|
||||
|
||||
# Roda o deploy
|
||||
./home/deploy/nest-stack/host-deploy.sh projeto1
|
||||
|
||||
# Pronto! Acessível em:
|
||||
# http://nest.juancjc.com.br/projeto1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Atualizando um projeto existente
|
||||
|
||||
```bash
|
||||
# Atualiza o código
|
||||
cd /home/deploy/projects/projeto1
|
||||
git pull
|
||||
|
||||
# Redeploya
|
||||
/home/deploy/nest-stack/host-deploy.sh projeto1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Reset do container (via Portainer)
|
||||
|
||||
1. Portainer → Containers → `nestjs-stack` → **Restart** ou **Reset**
|
||||
2. O container sobe e **automaticamente relança todos os projetos** que tiverem `dist/main.js`
|
||||
3. Os arquivos dos projetos continuam intactos (estão no volume do host)
|
||||
|
||||
---
|
||||
|
||||
## Comandos úteis
|
||||
|
||||
```bash
|
||||
# Ver logs do container
|
||||
docker logs nestjs-stack -f
|
||||
|
||||
# Ver processos PM2 rodando
|
||||
docker exec nestjs-stack pm2 list
|
||||
|
||||
# Ver logs de um projeto específico
|
||||
docker exec nestjs-stack pm2 logs projeto1
|
||||
|
||||
# Entrar no container
|
||||
docker exec -it nestjs-stack bash
|
||||
|
||||
# Ver status do nginx
|
||||
docker exec nestjs-stack nginx -t
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Regras de porta
|
||||
|
||||
| Projeto | Porta interna |
|
||||
|---------------|---------------|
|
||||
| projeto1 | 3001 |
|
||||
| projeto2 | 3002 |
|
||||
| projeto3 | 3003 |
|
||||
| projetoN | 300N |
|
||||
|
||||
A porta é determinada pela **ordem alfabética das pastas** em `/home/deploy/projects`.
|
||||
|
||||
---
|
||||
|
||||
## Seu projeto NestJS não precisa de nenhuma config especial
|
||||
|
||||
O Nginx remove o prefixo `/projeto1` antes de repassar ao NestJS.
|
||||
Seu app recebe as rotas normalmente como `/`.
|
||||
|
||||
**Único requisito:** seu `main.ts` deve aceitar a porta via variável de ambiente ou argumento:
|
||||
|
||||
```typescript
|
||||
// main.ts
|
||||
async function bootstrap() {
|
||||
const app = await NestFactory.create(AppModule);
|
||||
const port = process.argv.find((_, i, a) => a[i-1] === '--port') || process.env.PORT || 3000;
|
||||
await app.listen(port);
|
||||
}
|
||||
bootstrap();
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user