modify docker file

This commit is contained in:
2025-11-26 11:40:33 -03:00
parent e1bd6fa61a
commit 86ae2a1084
3 changed files with 25 additions and 223 deletions

View File

@@ -1,29 +0,0 @@
# ⚙️ Configuração de Variáveis de Ambiente
## 📁 Arquivo .env
Crie um arquivo `.env` na pasta `apps/web/` com as seguintes variáveis:
```env
# Google Maps API Key (opcional)
# Obtenha sua chave em: https://console.cloud.google.com/
# Ative a "Geocoding API" para buscar coordenadas por endereço
# Deixe vazio para usar OpenStreetMap (gratuito, sem necessidade de chave)
VITE_GOOGLE_MAPS_API_KEY=
# VAPID Public Key para Push Notifications (opcional)
VITE_VAPID_PUBLIC_KEY=
```
## 📖 Documentação Completa
Para instruções detalhadas sobre como obter e configurar a Google Maps API Key, consulte:
📄 **[GOOGLE_MAPS_SETUP.md](./GOOGLE_MAPS_SETUP.md)**
## ⚠️ Importante
- O arquivo `.env` não deve ser commitado no Git (já está no .gitignore)
- Variáveis de ambiente começam com `VITE_` para serem acessíveis no frontend
- Reinicie o servidor de desenvolvimento após alterar o arquivo `.env`

View File

@@ -2,47 +2,52 @@
FROM oven/bun:1 AS base FROM oven/bun:1 AS base
# Set the working directory inside the container # Set the working directory inside the container
WORKDIR /usr/src/app WORKDIR /app
# Create a non-root user for security # ---
RUN addgroup --system --gid 1001 sveltekit FROM base AS prepare
RUN adduser --system --uid 1001 sveltekit # Replace <your-major-version> with the major version installed in your repository. For example:
# RUN yarn global add turbo@^2
RUN bun add -g turbo@^2
COPY . .
# Add lockfile and package.json's of isolated subworkspace
# Generate a partial monorepo with a pruned lockfile for a target workspace.
# Assuming "web" is the name entered in the project's package.json: { name: "web" }
RUN turbo prune web --docker
# Copy package.json and bun.lock (if available) # ---
COPY package.json bun.lock* ./ FROM base AS builder
# Install dependencies (including dev dependencies for build) # First install the dependencies (as they change less often)
# This will resolve workspace dependencies using the package.json files we just copied COPY --from=prepare /app/out/json/ .
RUN bun install --frozen-lockfile RUN bun install
# Build the project
COPY --from=prepare /app/out/full/ .
# Copy the rest of the source code # Copy the rest of the source code
COPY . . COPY --from=prepare /app/out/full/ .
# Prepare SvelteKit and build the application RUN bunx turbo build
# Navigate to web app directory and build
WORKDIR /usr/src/app/apps/web
RUN bun run prepare
RUN bun run build
# Production stage # Production stage
FROM oven/bun:1-slim AS production FROM oven/bun:1-slim AS production
# Set working directory # Set working directory
WORKDIR /usr/src/app WORKDIR /app
# Create non-root user # Create non-root user
RUN addgroup --system --gid 1001 sveltekit RUN addgroup --system --gid 1001 sveltekit
RUN adduser --system --uid 1001 sveltekit RUN adduser --system --uid 1001 sveltekit
# Copy built application from base stage # Copy built application from base stage
COPY --from=base --chown=sveltekit:sveltekit /usr/src/app/build ./build COPY --from=builder --chown=sveltekit:sveltekit /app/apps/web/build ./build
COPY --from=base --chown=sveltekit:sveltekit /usr/src/app/package.json ./package.json COPY --from=builder --chown=sveltekit:sveltekit /app/apps/web/package.json ./package.json
# Copy node_modules from root (Bun manages workspaces centrally) # Copy node_modules from root (Bun manages workspaces centrally)
COPY --from=base --chown=sveltekit:sveltekit /usr/src/app/node_modules ./node_modules COPY --from=builder --chown=sveltekit:sveltekit /app/apps/web/node_modules ./node_modules
# Copy any additional files needed for runtime # Copy any additional files needed for runtime
COPY --from=base --chown=sveltekit:sveltekit /usr/src/app/static ./static COPY --from=builder --chown=sveltekit:sveltekit /app/apps/web/static ./static
# Switch to non-root user # Switch to non-root user
USER sveltekit USER sveltekit

View File

@@ -1,174 +0,0 @@
# 📍 Configuração do Google Maps API para Busca de Coordenadas
Este guia explica como configurar a API do Google Maps para obter coordenadas GPS de forma automática e precisa no sistema de Endereços de Marcação.
## 🎯 Por que usar Google Maps?
-**Maior Precisão**: Resultados mais exatos para endereços brasileiros
-**Melhor Cobertura**: Banco de dados mais completo e atualizado
-**Geocoding Avançado**: Entende melhor endereços incompletos ou parciais
> **Nota**: O sistema funciona perfeitamente sem a API key do Google Maps, usando OpenStreetMap (gratuito). A configuração do Google Maps é opcional.
---
## 📋 Passo a Passo
### 1. Criar Projeto no Google Cloud Platform
1. Acesse [Google Cloud Console](https://console.cloud.google.com/)
2. Clique em **"Criar Projeto"** ou selecione um projeto existente
3. Preencha o nome do projeto (ex: "SGSE-App")
4. Clique em **"Criar"**
### 2. Ativar a Geocoding API
1. No menu lateral, vá em **"APIs e Serviços"** > **"Biblioteca"**
2. Procure por **"Geocoding API"**
3. Clique no resultado e depois em **"Ativar"**
4. Aguarde alguns segundos para a ativação
### 3. Criar Chave de API
1. Ainda em **"APIs e Serviços"**, vá em **"Credenciais"**
2. Clique em **"Criar Credenciais"** > **"Chave de API"**
3. Copie a chave gerada (você precisará dela depois)
### 4. Configurar Restrições de Segurança (Recomendado)
Para proteger sua chave de API:
1. Clique na chave criada para editá-la
2. Em **"Restrições de API"**:
- Selecione **"Restringir chave"**
- Escolha **"Geocoding API"**
3. Em **"Restrições de aplicativo"**:
- Para desenvolvimento local: escolha **"Referenciadores de sites HTTP"**
- Adicione: `http://localhost:*` e `http://127.0.0.1:*`
- Para produção: adicione o domínio do seu site
4. Clique em **"Salvar"**
### 5. Configurar no Projeto
1. No diretório `apps/web/`, copie o arquivo de exemplo:
```bash
cp .env.example .env
```
2. Abra o arquivo `.env` e adicione sua chave:
```env
VITE_GOOGLE_MAPS_API_KEY=sua_chave_aqui
```
3. Reinicie o servidor de desenvolvimento:
```bash
npm run dev
```
### 6. Verificar se está funcionando
1. Acesse a página de **Endereços de Marcação** (`/ti/configuracoes-ponto/enderecos`)
2. Clique em **"Novo Endereço"**
3. Preencha um endereço e clique em **"Buscar GPS"**
4. Se configurado corretamente, verá a mensagem: *"Coordenadas encontradas via Google Maps!"*
---
## 💰 Custos
### Google Maps Geocoding API
- **$5.00 por 1.000 requisições** (primeiros 40.000 são gratuitos por mês)
- **$0.005 por requisição** após os 40.000 gratuitos
> 💡 Para a maioria dos casos de uso, os 40.000 gratuitos são suficientes!
### OpenStreetMap (Fallback)
- **100% Gratuito** e ilimitado
- Sem necessidade de configuração
- Precisão levemente menor, mas ainda muito boa
---
## 🔄 Como funciona o sistema
O sistema foi projetado para usar uma estratégia de **fallback inteligente**:
1. **Primeiro**: Tenta buscar via Google Maps (se API key configurada)
2. **Se falhar ou não tiver API key**: Usa automaticamente OpenStreetMap
3. **Feedback**: Informa qual serviço foi usado na mensagem de sucesso
Isso garante que o sistema sempre funcione, mesmo sem a API key do Google Maps.
---
## 🔒 Segurança
### ⚠️ Importante
- **Nunca** commite o arquivo `.env` no Git (já está no .gitignore)
- **Nunca** compartilhe sua chave de API publicamente
- Configure **restrições de API** no Google Cloud Console
- Para produção, use variáveis de ambiente seguras no seu provedor de hospedagem
### Configuração em Produção
Para ambientes de produção (Vercel, Netlify, etc.):
1. Acesse as configurações do projeto no seu provedor
2. Vá em **"Environment Variables"** ou **"Variáveis de Ambiente"**
3. Adicione: `VITE_GOOGLE_MAPS_API_KEY` com o valor da sua chave
4. Faça o deploy novamente
---
## ❓ Solução de Problemas
### A busca não está usando Google Maps
- Verifique se a variável `VITE_GOOGLE_MAPS_API_KEY` está no arquivo `.env`
- Reinicie o servidor de desenvolvimento
- Verifique no console do navegador se há erros
### Erro: "This API project is not authorized to use this API"
- Verifique se a **Geocoding API** está ativada no projeto
- Aguarde alguns minutos após a ativação (pode levar até 5 minutos)
### Erro: "API key not valid"
- Verifique se copiou a chave corretamente
- Verifique se as restrições de API permitem o uso da Geocoding API
- Verifique se as restrições de aplicativo permitem seu domínio/endereço
### Mensagem: "Coordenadas encontradas via OpenStreetMap"
- Isso é normal se:
- Não há API key configurada
- A API key não é válida
- O Google Maps falhou na busca
- O sistema continua funcionando normalmente com OpenStreetMap
---
## 📚 Recursos Úteis
- [Google Cloud Console](https://console.cloud.google.com/)
- [Documentação Geocoding API](https://developers.google.com/maps/documentation/geocoding)
- [Preços Google Maps](https://developers.google.com/maps/billing-and-pricing/pricing)
- [OpenStreetMap Nominatim](https://nominatim.org/)
---
## ✅ Resumo
1. ✅ Crie projeto no Google Cloud
2. ✅ Ative Geocoding API
3. ✅ Crie chave de API
4. ✅ Configure restrições (recomendado)
5. ✅ Adicione `VITE_GOOGLE_MAPS_API_KEY` no `.env`
6. ✅ Reinicie o servidor
**Pronto!** O sistema agora usará Google Maps para busca de coordenadas com maior precisão.