Opisz wdrazanie na produkcje i pulapke nazw projektow Compose
Deploy Polska Lokalnie / deploy (push) Successful in 5s

Trzy rzeczy kosztowaly dzis najwiecej czasu i zadnej nie dalo sie wyczytac z repozytorium:
zmienne z pliku srodowiskowego nie docieraja do kontenera, jesli nie ma ich w sekcji
environment; wszystkie aplikacje na serwerze leza w katalogach "app", wiec Compose bez -p
wchodzi w cudzy stack; loginem jest e-mail, a nie nick.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-04 01:47:36 +02:00
parent cc96c06c84
commit 762b76f141
+37
View File
@@ -113,3 +113,40 @@ docker-compose.yml
```
## Jakiś testowy wpis
## Wdrozenie na produkcje
Deploy jest automatyczny: push na `main` uruchamia workflow Gitea, ktory wola
`/opt/polskalokalnie/deploy-prod.sh` na serwerze. Skrypt pobiera `main`, ustawia katalog
aplikacji dokladnie na stan repozytorium (`git reset --hard`) i przebudowuje stack.
Konfiguracja produkcyjna siedzi w `/opt/polskalokalnie/app/.env.production`, ktory jest
w `.gitignore`. Zmienne trafiaja do kontenera tylko wtedy, gdy sa wymienione w sekcji
`environment` w `docker-compose.prod.yml` - samo dopisanie ich do pliku `.env` nie wystarczy.
Reczne zmiany plikow sledzonych na serwerze sa przy kolejnym deployu nadpisywane, a ich lista
trafia do `/opt/polskalokalnie/deploy.log` jako `OSTRZEZENIE`. Poprawki nalezy wprowadzac
w repozytorium, nie na serwerze.
### Nazwa projektu Compose
Oba pliki compose maja `name: polskalokalnie`. To nie jest ozdobnik: na serwerze produkcyjnym
kazda z hostowanych aplikacji lezy w katalogu o nazwie `app`, a Compose bez tego wpisu
wyprowadza nazwe projektu z nazwy katalogu. Komenda `docker compose ...` bez `-p` wchodzila
wtedy w stack innej aplikacji i podmieniala w nim serwis `backend`.
Przy recznych operacjach na serwerze zawsze podawaj pelny zestaw parametrow:
```bash
docker compose -p polskalokalnie -f docker-compose.prod.yml --env-file .env.production ps
```
### Logowanie
Loginem jest **adres e-mail**. Nick jest nadawany automatycznie i sluzy wylacznie jako adres
profilu publicznego - nie mozna sie nim zalogowac.
Konto administratora powstaje przy pierwszym starcie z `APP_ADMIN_EMAIL` i `APP_ADMIN_PASSWORD`.
Gdy konto o tym adresie juz istnieje, haslo z konfiguracji jest ignorowane, zeby restart nie
cofal hasla zmienionego w ustawieniach konta. Awaryjne przywrocenie dostepu:
`APP_ADMIN_RESET_PASSWORD=true`, restart backendu, zalogowanie, powrot do `false`.