Coolify, Dokploy a podobné
Nasadenie na platforme, ktorá spúšťa Docker Compose z Git repozitára, so všetkými tajomstvami v nastaveniach prostredia platformy.
Platformy ako Coolify, Dokploy alebo stacky v Portaineri spúšťajú súbor Docker Compose z Git repozitára a tajomstvá
držia vo vlastných nastaveniach. Nevedia spustiť make-secrets.sh, preto referenčné nasadenie
docker compose, ktoré číta súbory s tajomstvami, im nevyhovuje.
deploy/paas/compose.yaml je to isté riešenie nastavené výlučne cez premenné prostredia.
Hodí sa najmä vtedy, keď už server na niečo iné prevádzkujete: register pridá asi 2,5 GB na disku, náročnejšiu prvú synchronizáciu asi na 15 minút a potom už veľmi málo.
| Služba | Spúšťa | Životný cyklus |
|---|---|---|
postgres |
PostgreSQL 18 | Beží trvalo, s kontrolou zdravia |
roles |
Vytvorí alebo aktualizuje štyri databázové roly | Raz pri každom nasadení, ako superpoužívateľ |
migrate |
accquix-register migrate |
Raz pri každom nasadení |
setup |
Jeden príkaz operátora z REGISTER_SETUP_COMMAND |
Raz pri každom nasadení; predvolene version |
sync |
accquix-register sync --every 1h |
Beží trvalo |
serve |
accquix-register serve na porte 8080 |
Beží trvalo, za proxy platformy |
Postup
Pridajte zdroj
Vytvorte zdroj typu Docker Compose z repozitára (alebo vášho forku) so súborom deploy/paas/compose.yaml.
Obraz sa zostaví zo zdrojového kódu; keď bude existovať vydaný obraz, nastavte REGISTER_IMAGE.
Nastavte premenné
Mená premenných skopírujte z deploy/paas/.env.example do nastavení prostredia platformy:
openssl rand -hex 32 # jedna hodnota pre každé z piatich hesiel
key=$(openssl rand -hex 24); echo "API kľúč: $key"
printf 'default:%s\n' "$(printf %s "$key" | shasum -a 256 | cut -d' ' -f1)" # REGISTER_API_KEYS| Premenná | Hodnota |
|---|---|
POSTGRES_PASSWORD |
Superpoužívateľ; používa ho len služba roles |
REGISTER_MIGRATE_PASSWORD, REGISTER_SYNC_PASSWORD, REGISTER_OPERATOR_PASSWORD, REGISTER_API_PASSWORD |
Jedno pre každú rolu |
REGISTER_API_KEYS |
meno:sha256hex, odtlačok každého API kľúča; samotný kľúč uložte inde |
REGISTER_SETUP_COMMAND |
suppress --init-empty, len pre prvé nasadenie |
Používajte hexadecimálne hodnoty: heslá idú do URL spojení tak, ako sú.
Nasmerujte doménu
Nasmerujte doménu na službu serve, port 8080, s TLS z platformy. Na portoch hostiteľa sa nič nezverejňuje.
Nasaďte a odstráňte príkaz setup
Prvé nasadenie potvrdí, že ide o novú inštaláciu bez námietok na obnovenie; dovtedy API odpovedá
503 reason=setup. Potom REGISTER_SETUP_COMMAND vymažte. Ak by zostal, pri ďalšom nasadení neškodne
zlyhá, no po opätovne zostavenej databáze by potvrdil „žiadne námietky“ bez toho, aby to niekto skontroloval.
Počkajte na prvú synchronizáciu
GET /readyz odpovie ready, keď sú zverejnené všetky zdroje, približne po 15 minútach.
Príkazy operátora
REGISTER_SETUP_COMMAND spustí raz ľubovoľný príkaz accquix-register s rolou operátora, no jeho výstup skončí
v logoch platformy, kam identifikátor z námietky nepatrí. Používajte ho len na suppress --init-empty. Námietky a
ich zálohy spúšťajte zo shellu servera, v Docker sieti projektu (jej meno ukáže platforma), s heslom operátora:
mkdir -p backup && chmod 777 backup # obraz beží ako uid 65532
docker run --rm --network <sieť projektu> -v "$PWD/backup:/backup" \
-e REGISTER_OPERATOR_DATABASE_URL="postgres://register_operator:<heslo>@postgres:5432/register?sslmode=disable" \
<obraz> suppress --export --output /backup/objections.tsv --overwrite
Rovnako sa spúšťa suppress --subject …, --undo alebo --restore /backup/objections.tsv. Čo ktorý robí, je v
Prevádzke. Obraz nemá shell, takže docker exec … sh nefunguje.
Spoločný existujúci PostgreSQL
Ak chcete namiesto služby postgres použiť PostgreSQL, ktorý na serveri už beží, vytvorte samostatnú databázu a
roly z Databázy a nasmerujte na ňu štyri URL premennými z
Konfigurácie. Synchronizácia musí mať priame spojenie, nikdy nie cez PgBouncer.