Skip to content
Snippets Groups Projects
Commit ffd02eed authored by jan.bednarik's avatar jan.bednarik
Browse files

Posgresql and Keycloak setup

parent 3ad864ab
No related branches found
No related tags found
No related merge requests found
[submodule "keycloak/keycloak-theme-pirati"]
path = keycloak/keycloak-theme-pirati
url = git@gitlab.pirati.cz:to/keycloak-theme-pirati.git
# Dev Tools
Pomocné nástroje pro vývoj Pirátských aplikací
\ No newline at end of file
Pomocné nástroje pro vývoj Pirátských aplikací.
Ke spuštění služeb se používá [Docker](https://www.docker.com).
Pro použití na **Mac OS** se přepněte na větev `macos` kvůli drobným odlišnostem
v síťování oproti Linux. Kde pro propojení mezi kontejnery se používá
`host.docker.internal` místo `localhost`.
## PostgreSQL
Spouští PostgreSQL pomocí docker-compose na `localhost:5432`.
Výchozí uživatel, heslo a databáze jsou `db`.
DSN pro připojení v aplikaci může vypadat jako: `postgres://db:db@localhost:5432/majak`
### Použití
V adresáři `postgres` je ovládací Makefile:
* spuštění: `$ make run`
* ukončení: `$ make stop`
### psql
Postgres shell (pro vytváření databází apod.) spustíte:
$ make psql
### Dump, restore, apod.
Celý adresář `postgres` je mountovaný dovnitř kontejneru do `/workdir`. Pokud si
pustíte shell v běžícím kontejneru, můžete přes něj nahrávat dump databází apod.:
$ docker compose exec postgres bash
### (bonus) Český fulltext
Fulltext v češtině využívá například Maják.
České slovníky jsou v adresáři `tsearch_data`, který je namountovaný do
kontejneru. Stačí v konkrétní databázi nastavit přes `psql`:
```sql
CREATE TEXT SEARCH DICTIONARY cspell (template=ispell, dictfile=czech, afffile=czech, stopwords=czech);
CREATE TEXT SEARCH CONFIGURATION czech (copy=english);
ALTER TEXT SEARCH CONFIGURATION czech ALTER MAPPING FOR word, asciiword WITH cspell, simple;
```
Otestovat funkčnost lze dotazem:
```sql
SELECT * FROM ts_debug('czech', 'Příliš žluťoučký kůň se napil žluté vody');
```
### (bonus) PostGIS
Databáze běží s rozšířením PostGIS. Pro použití v aplikaci zadejte do DSN např.:
`postgis://db:db@localhost:5432/nalodeni`
## Keycloak
Spouští Keycloak s Pirátským vzhledem pomocí docker-compose na `localhost:8080`.
Výchozí uživatel je `admin` s heslem `local`.
### Použití
V databázi PostgreSQL (viz výše) si vytvořte prázdnou databázi `keycloak`.
V adresáři `keycloak` je ovládací Makefile:
* spuštění: `$ make run`
* ukončení: `$ make stop`
### Client pro OpenID Connect
Pro vytvoření klienta pro aplikaci postupujte takto:
1. Přihlaste se jako admin na <http://localhost:8080>
2. V menu stránka Clients, vpravo nahoře tlačítko Create
3. Client ID dle aplikace (např. `majak`), protokol `openid-connect` a uložit
4. V detailu Clienta:
- změnit `Access Type` na `confidential`
- nastavit `Valid Redirect URIs` podle toho, kde pouštíte dev server s aplikací,
např.: `http://localhost:8006/*`
5. Po uložení Clienta tam bude mít záložku `Credentials`, kde najdete `Secret`
key pro připojení.
Nastavení v `.env` aplikace pak může vypadat takto:
OIDC_RP_CLIENT_ID=majak
OIDC_RP_CLIENT_SECRET=03da9e7b-0630-4b36-b105-abcdef123456789
OIDC_RP_REALM_URL=http://localhost:8080/auth/realms/master/
run:
docker compose up -d
stop:
docker compose down
destroy:
docker compose down -v
version: "3.4"
services:
keycloak:
image: jboss/keycloak:11.0.0
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=local
- DB_USER=db
- DB_PASSWORD=db
- DB_ADDR=localhost:5432
- DB_VENDOR=postgres
ports:
- "8080:8080"
restart: always
volumes:
- ./keycloak-theme-pirati:/opt/jboss/keycloak/themes/keycloak
Subproject commit 5ca67c8bc841f25c7c1edb67e437245eaff0f52b
run:
docker compose up -d
stop:
docker compose down
destroy:
docker compose down -v
psql:
docker compose exec postgres psql -U db db
version: "3.4"
services:
postgres:
image: postgis/postgis:12-3.1-alpine
environment:
- POSTGRES_USER=db
- POSTGRES_PASSWORD=db
- POSTGRES_DB=db
ports:
- "5432:5432"
restart: always
volumes:
- postgres-data-12:/var/lib/postgresql/data
- .:/workdir
- ./tsearch_data/czech.affix:/usr/local/share/postgresql/tsearch_data/czech.affix
- ./tsearch_data/czech.dict:/usr/local/share/postgresql/tsearch_data/czech.dict
- ./tsearch_data/czech.stop:/usr/local/share/postgresql/tsearch_data/czech.stop
volumes:
postgres-data-12:
This diff is collapsed.
This diff is collapsed.
a
ale
ano
atd
by
být
co
čí
čím
do
i
jak
je
jeho
jemu
její
jejich
ji
jim
již
jsem
jsi
jsou
k
kde
kdo
kdy
který
mém
mne
mně
můj
my
na
nad
nám
náš
ne
o
on
ona
oni
ono
pak
po
pod
pro
proto
proč
před
s
se
sem
si
svůj
ta
tady
tak
také
tam
tato
teď
ten
ti
tím
to
tobě
tomu
tvůj
ty
tyto
u
v
ve
vám
váš
viz
vy
z
za
ze
že
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment