diff --git a/docker-compose.yaml b/docker-compose.yaml index 6ef9107..d7fa116 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -320,8 +320,10 @@ services: command: 'sh -c "pnpm --filter admin preview --host 0.0.0.0 --port 39020"' expose: - '39020' - # Rastro Campo — PWA da fiscalização volante. No Coolify, atribua o domínio - # (CAMPO_DOMAIN) a este serviço, porta 39030. HTTPS obrigatório (câmera). + # Rastro Campo — PWA da fiscalização volante. O endereço sai da variável + # CAMPO_DOMAIN: basta defini-la e apontar o DNS, SEM configurar domínio na tela do + # Coolify (como o /api do backend já faz). HTTPS é obrigatório — sem ele o + # navegador não libera a câmera. campo: image: 'gitea.externo.utic.app.br/ericoalmeida/rastro-node:v4.3' restart: unless-stopped @@ -331,6 +333,17 @@ services: command: 'sh -c "pnpm --filter campo preview --host 0.0.0.0 --port 39030"' expose: - '39030' + labels: + - traefik.enable=true + # Sem PathPrefix e com prioridade baixa: este roteador pega tudo o que sobra no + # domínio do Campo. O /api do mesmo domínio tem prioridade 1000 no backend e + # ganha dele — a ordem importa, não a ordem de escrita. + - 'traefik.http.routers.rastrocampo.rule=Host(`${CAMPO_DOMAIN}`)' + - traefik.http.routers.rastrocampo.entryPoints=https + - traefik.http.routers.rastrocampo.tls=true + - traefik.http.routers.rastrocampo.priority=10 + - traefik.http.routers.rastrocampo.service=rastrocampo + - traefik.http.services.rastrocampo.loadbalancer.server.port=39030 # OCR de placas do Rastro Campo (CPU, modelos embutidos na imagem). Só rede interna. alpr: image: 'gitea.externo.utic.app.br/ericoalmeida/rastro-alpr:v1' diff --git a/docker-compose.yml b/docker-compose.yml index 6ef9107..d7fa116 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -320,8 +320,10 @@ services: command: 'sh -c "pnpm --filter admin preview --host 0.0.0.0 --port 39020"' expose: - '39020' - # Rastro Campo — PWA da fiscalização volante. No Coolify, atribua o domínio - # (CAMPO_DOMAIN) a este serviço, porta 39030. HTTPS obrigatório (câmera). + # Rastro Campo — PWA da fiscalização volante. O endereço sai da variável + # CAMPO_DOMAIN: basta defini-la e apontar o DNS, SEM configurar domínio na tela do + # Coolify (como o /api do backend já faz). HTTPS é obrigatório — sem ele o + # navegador não libera a câmera. campo: image: 'gitea.externo.utic.app.br/ericoalmeida/rastro-node:v4.3' restart: unless-stopped @@ -331,6 +333,17 @@ services: command: 'sh -c "pnpm --filter campo preview --host 0.0.0.0 --port 39030"' expose: - '39030' + labels: + - traefik.enable=true + # Sem PathPrefix e com prioridade baixa: este roteador pega tudo o que sobra no + # domínio do Campo. O /api do mesmo domínio tem prioridade 1000 no backend e + # ganha dele — a ordem importa, não a ordem de escrita. + - 'traefik.http.routers.rastrocampo.rule=Host(`${CAMPO_DOMAIN}`)' + - traefik.http.routers.rastrocampo.entryPoints=https + - traefik.http.routers.rastrocampo.tls=true + - traefik.http.routers.rastrocampo.priority=10 + - traefik.http.routers.rastrocampo.service=rastrocampo + - traefik.http.services.rastrocampo.loadbalancer.server.port=39030 # OCR de placas do Rastro Campo (CPU, modelos embutidos na imagem). Só rede interna. alpr: image: 'gitea.externo.utic.app.br/ericoalmeida/rastro-alpr:v1'