Tato stránka popisuje jak si rozchodit vývojovou verzi TMOU webu.
Nezbytné předpoklady jsou:
- Základní programátorské IT vzdělání, bez toho se nemá smysl do tohoto pouštět.
- Funkční Docker a Docker Compose (příkazy
docker
adocker-compose
na PATH). - Nainstalovaný tool
loopbind
viacomposer global require kiwicom/loopbind
. - Doména
tmou.test
nasměrovaná na IP adresu na které budou tunelovány Docker kontejnery (via/etc/hosts
). Na Linuxu to bude typicky127.0.0.1
nebo127.0.x.x
pokud používáte více Docker kompozic. Na OS X to bude buď stejné jako na Linuxu (může být pomalé), nebo třeba192.168.99.x
pokud používáte Docker Machine s VirtualBoxem. Tuto IP taktéž nastavte do souboru.env
do proměnnéIP
(bez toho se kompozice nespustí). Pokud používáte OS X nebo Linux využijte výše uvedený nástroj a zavolejte v kořenové složce projektu příkazloopbind apply
. Dále v tomto souboru nastavtePROJECT_DIR
na cestu k projektu,.
postačí pro většinu použití (jen na OS X při použití NFS je potřeba absolutní cesta začínající/System/Volumes/Data/
). - Pro spuštění Tracy ve vývojovém režimu potřebujete buď přidat adresu do
Booting.php
, nebo spouštět docker kompozici s ENV proměnouTRACY_DEBUG_ENABLE
nastavenou na1
(mělo by být nastaveno jako výchozí).
- Naklonujte si repozitář:
git checkout [email protected]:InstruktoriBrno/tmou-web.git
- Vytvořte (pokud neexistuje) adresář
.mysql
a dejte mu všechna oprávnění viachmod 777 .mysql
(relevantní pro Linux, jinak bude mít Docker problém tam zapisovat). - Spusťte
docker-compose up
, nebodocker-compose up -d
(odpojí se od terminálu). V případě, že se změnil hlavníDockerfile
sestavte nový kontejnerdocker-compose up --build
. - Počkejte na doběhnutí startu všech Docker kontejnerů, neměla by se objevit žádná chyba.
- Přihlašte se z vedlejší konzole do Docker kontejneru
webserver
pomocí příkazudocker-compose exec webserver bash
. - Uvnitř Docker kontejneru
webserver
nainstalujte Composer závislosticomposer install
. - Uvnitř Docker kontejneru
webserver
spusťte (po úplném naběhnutí databáze -- v logu kontejneruwebserver
jemysqld is alive
) databázové migrace pro zajištění aktuálnosti databáze:php bin/console migrations:migrate
- Nyní můžete vše používat:
- TMOU Web: http://tmou.test a https://tmou.test (primární vývoj probíhá skrze HTTPS, kvůli přihlašování)
- Adminer: http://tmou.test:8080
- Keycloak: https://tmou.test:9990 (musí být s HTTPS, jinak nefunguje)
- Pro ukončení kompozice
docker-compose stop
nebo CTRL-C pokud je spuštěna na popředí. Opětovné volánídocker-compose up
spustí předchozí stav.
Úplné smazání kontejnerů lze provést pomocídocker-compose down
.
Kompletní rebuild kontejnerů lze provést pomocídocker-compose up --build
.
Pro jednoduchost vývoje v delším časovém horizontu je připraveno automatizované vytváření dat.
Tyto data lze vytvářet pouze na existující databázi ve které ale nejsou žádná data (vyjma již přihlášených organizátorů).
Po vytvoření migrací je třeba zevnitř kontejneru docker-compose exec webserver bash
spustit php bin/console create-test-data
.
Toto vytvoří:
- Ročník v aktuálním roce se hrou první víkend v listopadu a kvalifikací poslední zářiový víkend.
- Vytvoří standardní sadu stránek & menu ročníku.
- Vytvoří 4 týmy.
- Vytvoří 2 diskuzní vlákna.
Databáze je v samostatném Docker kontejneru. Datové soubory jsou uloženy v adresáři .mysql
, pokud je
potřeba restartovat obsah databáze, stačí smazat obsah tohoto adresáře.
Dodatečná konfigurace databáze může probíhat skrze .cnf
soubory v adresáři .mysql-config
.
Pro přístup do databáze skrze UI je v kompozici přítomen Docker kontejner s Adminerem, jeho adresa v kompozici je http://tmou.test:8080.
Přihlašovací údaje jsou:
- Jméno:
tmou
- Heslo:
password
Keycloak je nakonfigurován v samostatném Docker kontejneru a jeho administrační rozhraní je přístupné na adrese https://tmou.test:9990.
Přihlašovací údaje jsou:
- Jméno:
admin
- E-mail:
[email protected]
- Heslo:
admin
Uživatelé:
<username>:<password> <email>
admin:admin [email protected]
tmou1:tmou1 [email protected]
tmou2:tmou2 [email protected]
tmou3:tmou3 [email protected]
netmou1:netmou1 [email protected]
netmou2:netmou2 [email protected]
URL pro autentizaci tmou:
- URL:
keycloak
- Realm:
Instruktoři Brno
- Client ID:
tmou-web-local
- Client Secret:
e7307d96-71e4-4c7a-a626-0bc2ac4eef66
V případě, že je potřeba vygenerovat nový export dat z realmu nelze použít export z administračního rozhraní, protože neobsahuje secret tokeny, ani uživatele, viz dokumentace.
-
Nahoďte docker kompozici, viz výše.
-
Připojte se na administrační rozhraní, viz výše.
-
Proveďte požadované změny.
-
Přihlašte se do příslušného Docker kontejneru
docker-compose exec keycloak bash
. -
a z adresáře
/opt/keycloak/bin
spusťte následující příkaz:kc.sh export --file /tmp/realm-export.json
-
Po úspěšném doběhnutí (a ukončení pomocí CTRL-C) zkopírujte obsah souboru
realm-export.json
do.keycloak/realm-export.json
.docker cp <CONTAINER_ID>:/tmp/realm-export.json .keycloak/realm-export.json
-
Z daného souboru odstraňte konfiguraci pro realm
master
a namísto pole ponechte jen objekt realmuInstruktoři Brno
. -
Otestujte novou konfiguraci.
V případě využívání počítače s ARM architekturou (například Macbook s M1 procesorem) může být problém s Keycloak kontejnerem, v takovém případě je
potřeba v docker-compose.yaml
změnit image
u keycloak
kontejneru na vhodný ekvivalentní obraz, například alemairebe/keycloak
. Lze je vyhledat pomocí Docker Hubu.