{"id":624,"date":"2025-02-14T15:44:33","date_gmt":"2025-02-14T15:44:33","guid":{"rendered":"https:\/\/datadandies.nl\/?p=624"},"modified":"2025-02-14T15:44:33","modified_gmt":"2025-02-14T15:44:33","slug":"cloud-reservation-system-in-een-docker-container","status":"publish","type":"post","link":"https:\/\/datadandies.nl\/index.php\/2025\/02\/14\/cloud-reservation-system-in-een-docker-container\/","title":{"rendered":"Cloud Reservation System in een Docker Container"},"content":{"rendered":"\n<p>Reserveringssysteem met behulp van Github Actions, Docker en Azure Container Registry.<\/p>\n\n\n\n<p>Potenti\u00eble klanten gebruiken de website door een datum en tijd te selecteren en hun e-mailadres in te voeren.<\/p>\n\n\n\n<p>De frontend bestaat uit een HTML-bestand met wat CSS en JavaScript. De backend is een Python-script met een Flask-applicatie en een SQLite-database.<\/p>\n\n\n\n<p>JavaScript stuurt verzoeken naar de Flask API-endpoints. Flask verwerkt de afspraakgegevens en communiceert met de SQLite-database.<\/p>\n\n\n\n<p>De implementatie verloopt als volgt:<\/p>\n\n\n\n<p>1. Met een Bash-script binnen een YAML-bestand maakt GitHub Actions een resourcegroep aan in Azure.<br>2. Een Azure Container Registry (ACR) wordt aangemaakt binnen de nieuwe resourcegroep.<br>3. Een Docker-image wordt gebouwd.<br>4. Login bij ACR, push de Docker-image naar ACR en bouw een Azure Container Instance (ACI).<br>5. ACI wordt gebruikt om de website te hosten (de Fully Qualified Domain Name van de ACI wordt gekoppeld aan een aangepast domein).<\/p>\n\n\n\n<p>Gebruikte tools: Github Actions, Docker, Azure ACR &amp; ACI, Python, Flask, SQLite, HTML, Javascript, CSS, Bash en YAML.<\/p>\n\n\n<div class=\"ead-preview\"><div class=\"ead-document\" style=\"position: relative;padding-top: 90%;\"><div class=\"ead-iframe-wrapper\"><iframe src=\"\/\/docs.google.com\/viewer?url=https%3A%2F%2Fdatadandies.nl%2Fwp-content%2Fuploads%2F2025%2F02%2Feetbare_avonturen_docker.pdf&amp;embedded=true&amp;hl=en\" title=\"Ingesloten document\" class=\"ead-iframe\" style=\"width: 100%;height: 100%;border: none;position: absolute;left: 0;top: 0;visibility: hidden;\"><\/iframe><\/div>\t\t\t<div class=\"ead-document-loading\" style=\"width:100%;height:100%;position:absolute;left:0;top:0;z-index:10;\">\n\t\t\t\t<div class=\"ead-loading-wrap\">\n\t\t\t\t\t<div class=\"ead-loading-main\">\n\t\t\t\t\t\t<div class=\"ead-loading\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/datadandies.nl\/wp-content\/plugins\/embed-any-document\/images\/loading.svg\" width=\"55\" height=\"55\" alt=\"Lader\">\n\t\t\t\t\t\t\t<span>Bezig met laden&#8230;<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"ead-loading-foot\">\n\t\t\t\t\t\t<div class=\"ead-loading-foot-title\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/datadandies.nl\/wp-content\/plugins\/embed-any-document\/images\/EAD-logo.svg\" alt=\"EAD logo\" width=\"36\" height=\"23\"\/>\n\t\t\t\t\t\t\t<span>Duurt het te lang?<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<div class=\"ead-document-btn ead-reload-btn\" role=\"button\">\n\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/datadandies.nl\/wp-content\/plugins\/embed-any-document\/images\/reload.svg\" alt=\"Opnieuw laden\" width=\"12\" height=\"12\"\/> Laad het document opnieuw\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<span>|<\/span>\n\t\t\t\t\t\t\t<a href=\"https:\/\/datadandies.nl\/wp-content\/uploads\/2025\/02\/eetbare_avonturen_docker.pdf\" class=\"ead-document-btn\" target=\"_blank\">\n\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/datadandies.nl\/wp-content\/plugins\/embed-any-document\/images\/open.svg\" alt=\"Open\" width=\"12\" height=\"12\"\/> Openen in nieuwe tab\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Reserveringssysteem met behulp van Github Actions, Docker en Azure Container Registry. Potenti\u00eble klanten gebruiken de website door een datum en tijd te selecteren en hun e-mailadres in te voeren. De frontend bestaat uit een HTML-bestand met wat CSS en JavaScript. De backend is een Python-script met een Flask-applicatie en een SQLite-database. JavaScript stuurt verzoeken naar&hellip;<\/p>\n<p class=\"more-link\"><a href=\"https:\/\/datadandies.nl\/index.php\/2025\/02\/14\/cloud-reservation-system-in-een-docker-container\/\" class=\"themebutton\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[34,47,63],"class_list":["post-624","post","type-post","status-publish","format-standard","hentry","category-blog","tag-azure","tag-docker","tag-project"],"_links":{"self":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/comments?post=624"}],"version-history":[{"count":1,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/624\/revisions"}],"predecessor-version":[{"id":626,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/624\/revisions\/626"}],"wp:attachment":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/media?parent=624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/categories?post=624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/tags?post=624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}