3.0 KiB
Sim, dá para usar Nixpacks. Você não deve compactar node_modules, dist, .git, logs, cache, uploads grandes.
Compacte somente o código-fonte necessário:
meu-projeto/
├─ frontend/
│ ├─ package.json
│ ├─ package-lock.json
│ ├─ index.html
│ ├─ vite.config.*
│ ├─ src/
│ └─ public/
tsconfig.json
tsconfig.app.json
tsconfig.node.json
tailwind.config.ts
postcss.config.js
eslint.config.js
.env.example
README.md
├─ backend/
│ ├─ package.json
│ ├─ package-lock.json
│ ├─ src/
│ └─ .env.example
prisma
nest-cli.json
tsconfig.build.json
tsconfig.json
└─ README.md
Ignore no .zip:
node_modules/
dist/
build/
.git/
.env
.env.local
*.log
.cache/
.vite/
coverage/
uploads/
tmp/
Recomendado no Coolify
Crie 2 aplicações separadas:
App 1: frontend React + Vite
App 2: backend API
1. Deploy do Backend
No Coolify:
Source: Upload ZIP ou Git
Build Pack: Nixpacks
Base Directory: backend
Build:
npm install
Build Command, se usar TypeScript:
npm run build
Start Command:
npm run start
Se o backend roda em dev com npm run dev, crie um script de produção no backend/package.json:
{
"scripts": {
"build": "tsc",
"start": "node dist/server.js"
}
}
Ou, se for JavaScript puro:
{
"scripts": {
"start": "node src/server.js"
}
}
No backend, use a porta via variável:
const PORT = process.env.PORT || 3000;
app.listen(PORT, "0.0.0.0");
No Coolify, configure as variáveis de ambiente do backend, exemplo:
DATABASE_URL=...
JWT_SECRET=...
NODE_ENV=production
2. Deploy do Frontend React + Vite
No Coolify:
Build Pack: Nixpacks
Base Directory: frontend
Build:
npm install
Build Command:
npm run build
Start Command:
npm run preview -- --host 0.0.0.0 --port $PORT
No frontend/package.json, deixe assim:
{
"scripts": {
"build": "vite build",
"preview": "vite preview"
}
}
Variável para apontar para o backend:
VITE_API_URL=https://api.seudominio.com
No código React:
const API_URL = import.meta.env.VITE_API_URL;
3. O que compactar
Compacte a pasta raiz do projeto contendo frontend e backend, mas sem arquivos pesados.
Exemplo:
zip -r projeto.zip . \
-x "*/node_modules/*" \
-x "*/dist/*" \
-x "*/build/*" \
-x ".git/*" \
-x "*/.env*" \
-x "*/.cache/*"
Melhor ainda: suba no GitHub/GitLab e conecte o repositório no Coolify. É mais fácil de atualizar depois.
Configuração da imagem:
Frontend:
Install Command: npm install
Build Command: npm run build
Start Command: npm run preview -- --host 0.0.0.0 --port $PORT
Backend:
Install Command: npm install
Build Command: npm run build
Start Command: npm run start