From 930e18d761ec287cb6700a24eb4352ed2ec9b00c Mon Sep 17 00:00:00 2001 From: tomasz-syn-grzegorza Date: Sat, 27 Jun 2026 15:31:07 +0200 Subject: [PATCH] Align Dokploy compose with Traefik: expose port 80 only, no host mapping. Remove FRONTEND_PORT from deployment compose; document Container Port 80 in Dokploy UI and clarify Gitea OAuth vs runtime git clone auth. Co-authored-by: Cursor --- docker-compose-example/.env.example | 7 ++----- docker-compose-example/README.md | 25 +++++++++++++---------- docker-compose-example/docker-compose.yml | 18 ++++++++-------- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/docker-compose-example/.env.example b/docker-compose-example/.env.example index 93de0be..dbe8100 100644 --- a/docker-compose-example/.env.example +++ b/docker-compose-example/.env.example @@ -2,13 +2,10 @@ # Copy to .env before deploy if needed. # Never commit .env with real credentials to version control. -# --- Frontend Server --- -# Uwaga: 8080 może być zajęty (np. agencja-ai). Użyj wolnego portu, np. 8082. -FRONTEND_PORT=8082 - # --- Gitea (opcjonalnie — tylko gdy repo jest prywatne) --- # Domyślnie clone używa publicznego URL bez auth. -# Dla prywatnego repo ustaw URL z tokenem (Deploy Token lub PAT w Gitea): +# Dokploy Gitea Provider (OAuth) NIE autoryzuje git clone wewnątrz kontenera — +# nadal potrzebujesz publicznego repo LUB tokena poniżej. # GITEA_REPO_URL=https://oauth2:TWÓJ_TOKEN@gitea.expert-it.agency-ai.dev/tomasz-syn-grzegorza/site-slavic-pulse-com.git # --- Strona (meta, SEO, PWA) --- diff --git a/docker-compose-example/README.md b/docker-compose-example/README.md index 0fd326c..d00153a 100644 --- a/docker-compose-example/README.md +++ b/docker-compose-example/README.md @@ -22,12 +22,18 @@ site-slavic-pulse-com/ ## Dokploy deployment **Kroki w Dokploy UI:** -1. Nowa aplikacja → wklej `docker-compose-example/docker-compose.yml` -2. Wklej `.env` (na podstawie `.env.example`) — ustaw `VIDEO_ID_*`, opisy SEO, port -3. Ustaw FQDN (np. `slavic-pulse.com`) -4. Deploy +1. Nowa aplikacja (Compose) → wklej `docker-compose-example/docker-compose.yml` +2. Wklej `.env` (na podstawie `.env.example`) — ustaw `VIDEO_ID_*`, opisy SEO +3. **Domains** → dodaj FQDN (np. `slavic-pulse.com`), **Container Port = `80`** +4. Traefik routuje ruch HTTPS → port 80 kontenera (bez mapowania portu na hosta) +5. Deploy -**Porty:** `${FRONTEND_PORT}:80` (domyślnie `8082:80`). Traefik routuje po FQDN do portu 80 kontenera. +**Porty:** nie używaj `ports:` w compose — Traefik/Dokploy łączy się z wewnętrznym `:80`. +W `docker ps` kolumna PORTS może być pusta — to normalne przy routingu przez Traefik. + +**Gitea Provider w Dokploy** (OAuth) — autoryzuje Dokploy do listowania repo i deployu z UI, +ale **nie** zastępuje credentials dla `git clone` wewnątrz kontenera przy starcie. +Dla prywatnego repo: ustaw repo jako Public **lub** dodaj `GITEA_REPO_URL` z Deploy Token w `.env`. ## Jak to działa @@ -41,7 +47,6 @@ site-slavic-pulse-com/ | Zmienna | Opis | |---------|------| -| `FRONTEND_PORT` | Port hosta (np. `8082`; unikaj konfliktu z `8080`) | | `GITEA_REPO_URL` | Opcjonalnie — URL clone z tokenem dla prywatnego repo | | `VIDEO_ID_FHD` / `VIDEO_ID_VERTICAL` | ID shortów YouTube | | `POST_VIDEO_REDIRECT_URL_*` | URL po zakończeniu filmu | @@ -70,12 +75,10 @@ fatal: could not read Username for 'https://gitea.expert-it.agency-ai.dev': No s GITEA_REPO_URL=https://oauth2:TWÓJ_TOKEN@gitea.expert-it.agency-ai.dev/tomasz-syn-grzegorza/site-slavic-pulse-com.git ``` -### Konflikt portu 8080 +### Brak portów w `docker ps` (kolumna PORTS pusta) -Na serwerze `8080` może być zajęty (np. `agencja-ai-frontend`). Ustaw w `.env`: -```env -FRONTEND_PORT=8082 -``` +Przy Traefik/Dokploy bez `ports:` w compose — **to oczekiwane**. +Sprawdź w Dokploy UI: domena → Container Port = **80**, kontener `Up (healthy)`. ### Zmiana konfiguracji po deployu diff --git a/docker-compose-example/docker-compose.yml b/docker-compose-example/docker-compose.yml index 057b98a..0bc678b 100644 --- a/docker-compose-example/docker-compose.yml +++ b/docker-compose-example/docker-compose.yml @@ -1,15 +1,12 @@ # ============================================================ # Slavic Pulse - Docker Compose (Dokploy / manual) # ============================================================ -# Dokploy-compatible pattern: uses pre-built image + runtime git clone. -# Dokploy only copies docker-compose.yml + .env to the server, so local -# build context with a Dockerfile does not work. +# Dokploy + Traefik: NIE mapuj portu na hosta (ports:). +# W UI Dokploy ustaw domenę i Container Port = 80 — Traefik routuje po FQDN. +# Wewnętrznie nginx nasłuchuje na :80 (expose poniżej). # -# Port hosta: FRONTEND_PORT z .env (domyślnie 8082) → nginx w kontenerze na porcie 80. -# Dokploy/Traefik routuje po FQDN do wewnętrznego portu 80 kontenera. -# -# WAŻNE: repozytorium Gitea musi być publiczne LUB ustaw GITEA_REPO_URL z tokenem w .env -# (patrz README — bez tego git clone kończy się exit 128 i kontener restartuje w pętli). +# Runtime git clone — repozytorium musi być publiczne LUB ustaw GITEA_REPO_URL w .env +# (patrz README — prywatne repo bez tokenu = exit 128, restart loop). # ============================================================ services: @@ -17,8 +14,9 @@ services: image: nginx:1.27-alpine container_name: slavic-pulse-com-frontend restart: unless-stopped - ports: - - "${FRONTEND_PORT:-8082}:80" + + expose: + - "80" env_file: - .env