Deploy using Docker Compose

Implementeren met Docker Compose

Introductie

Momenteel ondersteunen we het gebruik van Docker Compose om de Syntho-toepassing te implementeren. We hebben een Docker Compose bestand dat alle containers zal deployen die nodig zijn voor de Syntho Applicatie. Op de volgende pagina worden de stappen beschreven die nodig zijn om onze applicatie te implementeren met Docker Compose.

Deployment stappen

  • Download de nieuwste Docker Compose bestanden van onze Github repository onder Releases. Het bestand dat gedownload moet worden van de release is docker-compose.tar.gz.

  • Gebruik docker login om in te loggen in de Syntho Container Registry, of docker load om images uit bestanden te laden. Zie Syntho Documentatie onder Deploy Syntho -> Introductie -> Toegang Docker images

  • Pak docker-compose.tar.gz uit met tar -xf docker-compose.tar.gz en open de uitgepakte map.

  • Kopieer voorbeeld.env naar .env met bijvoorbeeld het Linux commando cp voorbeeld.env .env.

  • Pas de volgende variabelen aan in .env voor een minimale setup:

    • LICENSE_KEY: De licentiesleutel wordt geleverd door Syntho.

    • ADMIN_USERNAME, ADMIN_EMAIL en ADMIN_PASSWORD: de gegevens voor het beheerdersaccount dat kan worden gebruikt zodra de applicatie is ingesteld. Het e-mailadres en wachtwoord zijn nodig om in te loggen.

Het .env bestand bevat de laatste image tag voor alle afbeeldingen, wat een rolling tag is. Pas de volgende image tags aan met de tags van het Syntho Team om ze aan een bepaalde versie te koppelen:

  • RAY_IMAGE

  • CORE_IMAGE

  • BACKEND_IMAGE

  • FRONTEND_IMAGE

Om de Backend API correct te benaderen, moet het domein worden ingesteld. Als de applicatie wordt benaderd op dezelfde machine waarop het wordt geïnstalleerd, dan zou localhost goed moeten zijn voor dit domein. Als je een andere machine op je netwerk gebruikt, moet het IP-adres of de hostnaam worden gebruikt voor de volgende variabelen:

  • FRONTEND_HOST: dit moet ook de poort bevatten. Als poort 3000 wordt gebruikt voor het frontend en het is toegankelijk op dezelfde machine, dan zou de waarde localhost:3000 zijn. Als een andere machine op hetzelfde netwerk toegang moet hebben tot de frontend, dan is de waarde <IP-van-deployed-machine>:3000.

  • FRONTEND_DOMAIN: is ofwel localhost of het IP van de machine waarop de Syntho Applicatie draait.

Na het aanpassen van deze variabelen zou het docker compose bestand klaar moeten zijn voor implementatie. De documentatie zal doorgaan met het beschrijven van bepaalde secties die in bepaalde gevallen aangepast moeten worden, maar op dit punt is de Docker Compose bestand zou klaar moeten zijn om te implementeren.

Extra informatie

Het opzetten van meerdere nodes vereist een meer gedetailleerde configuratie. Deze opstelling wordt aanbevolen voor schaalbare productieomgevingen. Stappen en configuraties kunnen variëren afhankelijk van de specifieke vereisten van het netwerk en het aantal betrokken nodes.

TLS

Als er een SSL-certificaat moet worden geleverd, moeten de volgende omgevingsvariabelen worden aangepast:

# Als TLS wordt gebruikt, stel dan protocol in op https en secured_cookies op True
FRONTEND_PROTOCOL=https
SECURED_COOKIES="True".

Standaard zijn deze waarden respectievelijk ingesteld op http en False.

Kern-API

Database

De referenties voor de database die de Core API & Worker (core en core_worker en in het docker-compose bestand) gebruiken om verbinding te maken, staan beschreven in de volgende omgevingsvariabelen:

CORE_DATABASE_HOST=<database-host>
CORE_DATABASE_USER=<database-user>
CORE_DATABASE_PASSWORD=<database-paswoord>
CORE_DATABASE_NAME=<database-naam>

Standaard zijn deze waarden ingesteld op de waarde voor de Postgres instantie die wordt ingezet als onderdeel van het docker-compose bestand. Als een andere database moet worden gebruikt, kunnen de referenties hier worden aangepast. Alleen Postgres databases worden hiervoor ondersteund.

Redis

De informatie die wordt gebruikt om verbinding te maken met de Redis-instantie wordt opgeslagen in de volgende omgevingsvariabelen:

CORE_CELERY_BROKER_URL=redis://<redis-host>:6379/0
CORE_CELERY_RESULT_BACKEND=redis://<redis-host>:6379/0
CORE_REDIS_HOST=redis
CORE_REDIS_PORT=6379

Aanvullende omgevingsvariabelen

Belangrijke andere variabelen zijn CORE_SECRET_KEY, die wordt gebruikt als encryptiesleutel. Deze sleutel kan worden gegenereerd met het volgende commando in python:

# Als cryptografie niet is geïnstalleerd, installeer het dan met `pip install cryptography`.
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Als er problemen ontstaan met de poort van de toepassing, kan de standaardpoort worden gewijzigd met de CORE_PORT variabele in het .env bestand.

CORE_PORT=8000

Backend

Database

Net als de Core API moet de backend verbinding maken met de Postgres database. Deze database wordt gebruikt voor het opslaan van applicatiegegevens. Standaard wordt er verbinding gemaakt met

BACKEND_DB_HOST=<host>
BACKEND_DB_NAME=<database-naam>
BACKEND_DB_USER=<database-gebruiker>
BACKEND_DB_PASWOORD=<database-wachtwoord>
BACKEND_DB_PORT=<database-poort>

Redis

Voor de Redis-instantie die voor het backend wordt gebruikt, kunnen we de volgende variabelen instellen. De Redis-instantie is opgenomen in het docker-compose bestand, maar als een aparte Redis-instantie wordt gebruikt, moeten de referenties worden ingesteld in het .env bestand.

BACKEND_REDIS_HOST=redis # Redis hostnaam om verbinding mee te maken
BACKEND_REDIS_PORT=6379 # Redis-poort om verbinding mee te maken
BACKEND_REDIS_DB_INDEX=1 # Redis database index om te gebruiken

Admin gebruiker

Zoals eerder in de documentatie beschreven, kunnen de gebruikersnaam, het e-mailadres en het wachtwoord van de admin-gebruiker worden aangepast. Daarvoor kunnen de volgende omgevingsvariabelen worden gebruikt:

ADMIN_USERNAME=admin
ADMIN_PASSWORD=somepassword
ADMIN_EMAIL=admin@company.com

Aanvullende omgevingsvariabelen

Voor het backend kunnen enkele extra omgevingsvariabelen worden ingesteld. We kunnen de poort die wordt weergegeven voor het backend wijzigen als er problemen optreden met poorttoewijzingen. Om de poort te wijzigen, kunnen we de waarde in BACKEND_PORT veranderen:

BACKEND_POORT=8000

Dan hebben we de geheime sleutel die het backend gebruikt voor encryptie. We kunnen deze sleutel op elke waarde instellen, zolang het maar een vrij lange string is. Voorbeeld:

BACKEND_SECRET_KEY="66n6ldql(b2g0jmop(gr)@x0tz!*^7(d1_$2#y&$t&3r$=cr%#"

Voorkant

De frontend is verantwoordelijk voor de gebruikersinterface. De frontend zal hiervoor verbinding moeten maken met de Backend. De belangrijkste variabele die overblijft voor de frontend is de volgende:

FRONTEND_PORT=3000

Deze variabele stelt de poort voor het frontend in, die zichtbaar moet zijn voor de gebruiker om toegang te krijgen tot de applicatie.

Last updated