Terug naar projecten

CI/CD Compose

Dit Python-script automatiseert het deployen van applicaties op basis van Docker Compose.

Project Screenshot 1
Project Screenshot 2
Project Screenshot 3

Tech Stack

  • Python

    Backend runtime

  • SQLite

    Lightweight RDB

  • Docker

    Container

CI/CD Compose

Applicaties met weinig traffic kunnen prima draaien op een Docker Compose-setup op een VPS. Voor mij is dit dé manier om applicaties te deployen. Veel CI/CD-oplossingen voelden te zwaar voor mijn behoeften, dus ging ik op zoek naar iets eenvoudigers – en dit werkt perfect!

Functionaliteit

Wat ik wilde bereiken, was simpel: zodra ik een commit maakte op de main branch van verschillende services binnen mijn applicatie, moesten ze automatisch opnieuw gedeployed worden.

Om dat voor elkaar te krijgen, heb ik een eigen Python-script geschreven dat het volgende doet:

  • Je maakt een YAML-configuratiebestand met alle benodigde info over je Compose-project.
  • Het script checkt periodiek of er nieuwe commits zijn op de main branches.
  • Bij een nieuwe commit start het script automatisch een continuous deployment-proces.
  • Je krijgt per mail een notificatie of de deployment geslaagd is of niet.

De configuratie is simpel en bevat paden naar de GitHub-repo’s, Dockerfiles, projecten en de Compose-file. Voordat het script start, valideert het eerst deze instellingen. Is er iets mis? Dan krijg je direct een melding.

Via de GitHub API controleert het script op wijzigingen in de main branch. Zodra er een nieuwe commit is, worden de updates automatisch binnengehaald. Bij een zero-downtime deployment wordt eerst een extra container gestart voordat de Docker-image opnieuw wordt gebouwd.

Zodra de nieuwe container draait, wordt de oude netjes afgesloten. Hierdoor ervaren gebruikers vrijwel geen downtime en blijft de applicatie soepel draaien.

Gebruik van Technologie

Het script is grotendeels geschreven in Python en blijft lekker lichtgewicht met minimale dependencies. Daarnaast gebruik ik een SQLite-database.

Leerproces & Ontwikkeling

Dit project heeft me veel geleerd over het automatiseren van processen. Het dwong me om het hele proces tot in de puntjes uit te werken, zodat elke stap precies verliep zoals bedoeld.

Goede logging bleek hierbij onmisbaar—vooral op momenten dat het misgaat. Dan is het cruciaal om snel en volledig inzicht te hebben in wat er is gebeurd.

Meer Projecten

Mijnbonnetje

Mijnbonnetje

Een applicatie ontworpen om gemakkelijk je bonnetjes en uitgaves bij te houden.

PythonSvelteFastAPIOCR
View Details
Software Assessment

Software Assessment

Voor mijn bedrijf heb ik een project ontwikkeld als onderdeel van een selectieprocedure voor een stage in de software shorttrack. Dit project diende als toelatingseis,

PythonReactCacheRedis
View Details
Untitled

Untitled

Een mobiele web applicatie om films en series bij te houden. Ook krijg je informatie over waar deze content te streamen is.

Angular JSJavaSpringbootJunitHibernate
View Details
Pingsage

Pingsage

Deze app biedt een eenvoudige manier om verschillende servers en websites te monitoren op responstijd, uptime en aangepaste metrics. Met behulp van overzichtelijke en visueel aantrekkelijke grafieken krijg je snel inzicht in de prestaties van je systemen, zodat je problemen tijdig kunt opsporen en verhelpen.

JavaPythonTypeScriptMongoDB
View Details