{"id":7861,"date":"2018-07-24T09:41:37","date_gmt":"2018-07-24T09:41:37","guid":{"rendered":"https:\/\/www.inspark.nl\/?p=7861"},"modified":"2023-04-18T15:17:28","modified_gmt":"2023-04-18T15:17:28","slug":"aan-de-slag-met-een-custom-mendix-docker-image-in-een-web-app-voor-containers","status":"publish","type":"post","link":"https:\/\/www.inspark.nl\/aan-de-slag-met-een-custom-mendix-docker-image-in-een-web-app-voor-containers\/","title":{"rendered":"Aan de slag met een Custom Mendix Docker image in een Web App voor containers"},"content":{"rendered":"
Een paar maanden geleden werd mij gevraagd om Low-Coding Mendix IaaS-applicaties te migreren naar Platform-as-a-Service (PaaS)-diensten in de Microsoft Azure Cloud. Doelstellingen waren hoge beschikbaarheid, schaalbaarheid en multi-cloud portabiliteit, zodat ontwikkelaars zich meer kunnen focussen op het genereren van bedrijfswaarde met behulp van de CI\/CD pipeline. Verder was een vermindering van het onderhoud van servers en besturingssystemen gewenst.<\/p>\n
Nooit was het zo eenvoudig om container-gebaseerde Web Apps voor Linux te implementeren. Je hoeft slechts de images van de docker-container van een priv\u00e9 Azure Container Registry naar een webapplicatie over te zetten. Vervolgens zal deze de gecontaineriseerde app implementeren met jouw voorkeursafhankelijkheden zoals PostgreSQL\/MySQL. Zo ga je van opslag naar productie in enkele seconden.<\/p>\n
\u00a0<\/strong><\/p>\n Het platform zorgt automatisch voor OS-patches, capaciteitsbepaling en loadbalancing. Daardoor is het op- of afschalen een kwestie van minuten geworden; dat kan heel eenvoudig met behulp een schuifknop, het oproepen van de REST API, of met de configuratie van automatische schaleringsregels met geautomatiseerde accounts.<\/p>\n Daarom heb ik gekozen voor een Linux Web App voor containers om de Docker Images te bouwen en in containers te plaatsen. Docker is een open-source container-technologie; een zeer schaalbare oplossing, geautomatiseerd voor pipelines (CI\/CD).<\/p>\n In dit blog leg ik uit hoe je een Mendix Docker-image bouwt en uitvoert, door de inzet van het ‘Mendix Docker Buildpack’, in combinatie met een aantal afhankelijkheden: Azure Web App voor Containers, Azure PostgreSQL, en Azure Container Registry + Azure Storage (opslag).<\/p>\n Een Mendix Docker-image wordt apart gemaakt voor elke versie-release van de toepassing, door de inzet van een Buildpack met specifieke instellingen. Om zo’n docker image te laten draaien, gebruiken we een Linux Web App. Je kunt ook gebruik maken van een van de volgende Docker containerdiensten, gebaseerd op Azure cloud:<\/p>\n <\/p>\n Een VSTS Pipleline dient voor de automatisering van de bouw-, test- en stationeringsfases van de applicatieontwikkeling, maar maakt je ook ‘agile’ (wendbaar) op j\u00f3\u00faw voorwaarden. Met een VSTS Pipeline verbeter je tevens de samenwerking met andere teams en kun je gebruik maken van een continue integratie- en deployment -pipeline (CI\/CD).<\/p>\n <\/p>\n Azure Container Instances maakt het eenvoudig om Docker Containers in Azure aan te maken en te beheren, zonder de inzet van nieuwe virtuele machines. Het is vandaag de dag een van de meest gebruikte technologie\u00ebn in cloudcomputing om volledig PaaS-gebaseerd te kunnen werken. Door de uitrol in Web Apps voor Containers voegt Azure Container zich met behulp van Azure Autoscaling volledig naar jouw bedrijfsbehoeften.<\/p>\n Web App voor Containers zorgt voor de uitrol van gecontaineriseerde applicaties en de daarvoor benodigde infrastructuur binnen Azure. Wanneer je een container-image naar de Azure Container Registry overzet, kun je deze image toepassen op de Web App voor Containers. Een Docker Container is een ge\u00efsoleerd applicatieplatform. Het bevat alles wat nodig is om je toepassing uit te voeren en is gebaseerd op \u00e9\u00e9n of meerdere Docker Images. Containers worden gecre\u00eberd vanuit images.<\/p>\n <\/p>\n De architectuur kan verschillende vormen aannemen:<\/p>\n Zo kan een Linux Web-applicatie bijvoorbeeld ge\u00efmplementeerd worden in een app service plan, samen met een Application Gateway (AGW) voorzien van WAF. Een andere manier is het isoleren van de Linux Web App voor Containers binnen een Azure App Service omgeving (ASE). Met deze set-up heb je een ge\u00efsoleerde web-applicatie in een Azure virtueel netwerk (VNet) en daarnaast zorg je voor connectiviteit en integratie met het on-premises DC.<\/p>\n <\/p>\n Voor een Azure App Service met afhankelijkheden raad ik je aan om Azure Blob Storage en een database as-a-service (bijv. Azure Database voor PostgreSQL) afzonderlijk te gebruiken voor je gegevensbehoeften. Zo kun je capaciteiten en prestaties op applicatieniveau optimaliseren. Nu kunnen we dus een gecontaineriseerde implementatiearchitectuur opzetten met Microsoft Azure Web App voor Containers.<\/p>\n <\/p>\n Let op: Het gaat hier nog steeds om een public preview betreft, namelijk Linux App service plans in de App Service Environment (ASE): Starten met Mendix app op Azure Web App voor containers is heel eenvoudig. In deze demo maak je een Custom Docker Image in een Azure Container Registry, om deze vervolgens samen met een aantal noodzakelijke variabelen te implementeren in een Web App.<\/p>\n <\/p>\n De Web Apps op Linux worden nu uitgerold. Dit kan enkele minuten duren.<\/p>\nSneller en makkelijker schalen<\/h2>\n
\n
VSTS pipeline<\/h3>\n
Azure Container<\/h3>\n
Azure Web App voor containers & set-up van de architectuur<\/h1>\n
\n
Tip: preview Linux op ASE<\/h3>\n
\n“Je ASE bevat Linux-apps. Linux op ASE staat in preview-modus en wordt niet ondersteund voor productie workloads.”
\nTest de mogelijkheden en profiteer van de uitrol van applicaties in een VNet voor beveiligde netwerktoegang, om zo een website\/applicatie te isoleren voor enkel intern gebruik. Daarnaast kun je op deze manier een App Service achter een WAF-geactiveerde Applicatie Gateway laten draaien. Ik heb het zelf getest en het werkt probleemloos in mijn testopstelling.<\/p>\nAan de slag met Docker op Azure Web App<\/h1>\n
Aanmaken van de Azure Container Registry<\/h3>\n
\n
Aanmaken van de App Service ‘Web Apps’ in Linux<\/h3>\n
\n