Revisão logo
This commit is contained in:
@@ -1,96 +0,0 @@
|
||||
# Deploy com Docker - Avanzato
|
||||
|
||||
## O Problema
|
||||
|
||||
O Nginx no Docker nao vem configurado para SPA React. Ao acessar `/avaliacao` diretamente, da 404.
|
||||
|
||||
## A Solucao
|
||||
|
||||
### Opcao 1: Configurar Nginx dentro do container (RECOMENDADO)
|
||||
|
||||
**1. Criar um novo Dockerfile:**
|
||||
|
||||
```dockerfile
|
||||
FROM nginx:alpine
|
||||
|
||||
# Copiar o site
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
|
||||
# Copiar a configuracao customizada
|
||||
COPY nginx-docker.conf /etc/nginx/conf.d/default.conf
|
||||
|
||||
# Expor porta 80
|
||||
EXPOSE 80
|
||||
|
||||
# Iniciar Nginx
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
```
|
||||
|
||||
**2. Build e run:**
|
||||
|
||||
```bash
|
||||
# Build
|
||||
npm run build
|
||||
bash scripts/build-static-routes.sh dist
|
||||
docker build -t avanzato-site .
|
||||
|
||||
# Run
|
||||
docker run -d -p 80:80 --name avanzato avanzato-site
|
||||
```
|
||||
|
||||
### Opcao 2: Usar docker-compose
|
||||
|
||||
**docker-compose.yml:**
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
avanzato:
|
||||
image: nginx:alpine
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- ./dist:/usr/share/nginx/html:ro
|
||||
- ./nginx-docker.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
container_name: avanzato-site
|
||||
```
|
||||
|
||||
**Comandos:**
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
bash scripts/build-static-routes.sh dist
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Opcao 3: Container ja rodando (hotfix)
|
||||
|
||||
Se o container ja esta rodando:
|
||||
|
||||
```bash
|
||||
# Copiar config para dentro do container
|
||||
docker cp nginx-docker.conf avanzato-site:/etc/nginx/conf.d/default.conf
|
||||
|
||||
# Recarregar Nginx
|
||||
docker exec avanzato-site nginx -s reload
|
||||
```
|
||||
|
||||
## Verificar se funcionou
|
||||
|
||||
```bash
|
||||
# Testar
|
||||
curl -I http://localhost/avaliacao
|
||||
# Deve retornar HTTP 200, nao 404
|
||||
```
|
||||
|
||||
## A regra magica
|
||||
|
||||
A unica coisa que importa e esta linha no Nginx:
|
||||
|
||||
```nginx
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
```
|
||||
|
||||
Isso diz ao Nginx: "se nao encontrar o arquivo, manda para index.html" — onde o React pega a rota.
|
||||
Reference in New Issue
Block a user