Als je nieuw bent met Docker en containers, is het leren implementeren van een Python Flask API-applicatie op Docker een geweldige manier om te beginnen. Docker stelt je in staat om applicaties te containeriseren met lichtgewicht technologie en beveiliging voor snelle implementatie van de applicatie.
In deze tutorial leer je om je eigen meester te worden in het opzetten en implementeren van Python Flask API-applicaties op Docker-containers.
Maak je klaar en begin met implementeren!
Vereisten
Als je stap voor stap wilt volgen, moet je het volgende geïnstalleerd hebben:
- Een Ubuntu-machine met Docker geïnstalleerd. Deze tutorial maakt gebruik van Ubuntu 18.04.5 LTS met Docker v19.03.8.
- Python v3.9 of later geïnstalleerd op de Ubuntu-machine. Deze tutorial zal Python v3.9.2 gebruiken op een Ubuntu-machine.
- Elinks-pakket geïnstalleerd op de Ubuntu-machine die wordt gebruikt om de API in deze tutorial te testen.
Het creëren van een Python Flask API-toepassing (GET- en POST-API)
Start deze tutorial door een Python Flask-toepassing te maken. Flask is een lichtgewicht micro web applicatiekader geschreven in Python, dat werkt als een WSGI. Flask biedt handige tools en functies voor het maken van webapplicaties in Python.
Voordat je een Python Flask-toepassing maakt, installeer je een Python Flask en een Python virtuele omgeving waarin Flask de toepassing zal uitvoeren.
1. Log in op je Ubuntu-machine met je favoriete SSH-client.
2. Voer vervolgens de volgende commando’s uit om een map met de naam ~/docker_python_flask_demo te maken en daarnaar te schakelen. Deze map bevat alle bestanden die nodig zijn om een toepassing uit te voeren met Python en Docker.
3. Voer het pip
-commando hieronder uit om een Python virtuele omgeving (virtualenv
) te installeren
, die nodig is voor Flask om de toepassingen uit te voeren. Een Python virtuele omgeving biedt zijn eigen Python-binair en per-toepassing geïnstalleerde pakketten om conflicten met andere toepassingen te voorkomen.

4. Voer het virtualenv
-commando hieronder uit om een virtuele omgeving te creëren en activeren met behulp van de venv
-module.

5. Voer nu het onderstaande commando uit om het Python flask
-pakket te installeren met de pip
-pakketbeheerder.
6. Voer de volgende opdracht uit om pakketten te activeren in je virtuele omgeving voordat je ze installeert of gebruikt. Dit wijzigt de omgevingsvariabele VIRTUAL_ENV
zodat deze naar je virtuele omgeving wijst en voegt het Python-binair van de virtuele omgeving toe aan het pad, zodat je het juiste binair kunt uitvoeren.
7. Maak nog een bestand aan met de naam requirements.txt en definieer de afhankelijkheid van de Flask-toepassing zoals hieronder weergegeven.
8. Maak een tekstbestand ~/docker_python_flask_demo/app.py aan en vul het bestand met de onderstaande Python-code.
De onderstaande Python-code importeert de Python flask
klasse en maakt een instantie van de klasse met de naam app
. De instantie van de klasse app
bevat twee functies login()
die worden uitgevoerd wanneer gebruikers verzoeken sturen naar de pagina /login
.
De functie success()
wordt vervolgens uitgevoerd en toont de welkomstboodschap “naam-van-de-gebruiker” in de browser.
9. Maak nog een bestand genaamd ~/docker_python_flask_demo/form.html en kopieer/plak de onderstaande code.
Het uitvoeren van de onderstaande HTML-code maakt een formulier met twee invoervelden; een is tekst om je naam op te geven, en de andere is een verzendknop.
Zodra je een gebruikersnaam opgeeft en op de verzendknop drukt, wordt een postverzoek verzonden en voert Flask een andere functie uit en opent een nieuwe webpagina op http://localhost:5000/success/<gebruikersnaam>.
10. Voer tot slot de Python
-opdracht hieronder uit om de toepassing (app.py
) lokaal op je systeem te verifiëren.
Zoals je hieronder kunt zien, wordt de toepassing met succes uitgevoerd op de Ubuntu-machine maar niet op Docker. Je zult dezelfde toepassing starten op Docker in de volgende secties.

Het maken van een Dockerfile om de Python Flask API-toepassing te implementeren
Je hebt zojuist de Python Flask-toepassing gemaakt en geverifieerd dat deze lokaal op je machine werkt. Maar voordat je de toepassing op Docker implementeert, maak je eerst een Dockerfile om alle sets instructies te definiëren om het Docker-image te bouwen.
Maak een bestand genaamd Dockerfile in de ~/docker_python_flask_demo directory, en kopieer/plak de inhoud hieronder in de Dockerfile.
Docker zal deze Dockerfile gebruiken om alle instructies of commando’s uit te voeren die nodig zijn om een nieuwe Docker-image te bouwen boven op de basisimage (ubuntu:18.04
).
Voer nu het tree
-commando hieronder uit om te controleren of alle vereiste bestanden om de Python Flask-toepassing uit te voeren, zich bevinden in de werkdirectory (~/docker_python_flask_demo).

Het bouwen van een Docker-image voor Python Flask API-toepassing
Je hebt nu de vereiste bestanden om een Python Flask-toepassing te implementeren, maar deze bestanden zullen niets doen tenzij je een image bouwt. Je zult het docker build
-commando uitvoeren om een Docker-image te bouwen op basis van de instructies die je hebt ingesteld in de Dockerfile.
Voer de onderstaande docker build
-opdracht uit om een Docker-image te bouwen in de werkmap (.
). Deze opdracht geeft een tag (-t
) aan het image als flask-image
versie 1 (:v1
).

Voer nu de onderstaande docker
-opdracht uit om alle beschikbare images weer te geven.
Hieronder zie je verschillende teruggegeven eigenschappen, zoals REPOSITORY. Let op dat de naam van het REPOSITORY flask-image is en is getagd met een versie (v1), zoals hieronder weergegeven.

Het uitvoeren van de Python Flask-applicatie in een Docker-container
Na het maken van een Docker-image kun je nu de Python Flask-toepassing uitvoeren in een Docker-container. Een Docker-container verpakt code en de bijbehorende afhankelijkheden om toepassingen snel uit te voeren.
1. Voer de onderstaande docker run
-opdracht uit om het volgende te doen:
- Start de container in detaché-modus (
-d
), zodat deze als een achtergrondproces wordt uitgevoerd en de console-uitvoer retourneert bij creatie. - Maakt de poort van de Docker-host (
-p 5000:5000
) overeen met de poort van de container. - Start de Docker-container (
flask-image:v1
)
2. Voer vervolgens de docker
opdracht hieronder uit om alle containers in de Docker-engine op te sommen. Controleer of Docker de container succesvol heeft aangemaakt.

3. Voer tot slot de onderstaande opdracht uit om je webbrowser te openen in de Ubuntu-machine met behulp van elinks.
De opdracht opent de webbrowser in de terminal en vraagt om een naam, zoals hieronder weergegeven.
Voer je naam in en druk op de knop Verzenden.

4. Zoals je hieronder kunt zien, na het indrukken van de Verzenden knop, wordt de inlogfunctie doorgestuurd naar de succesfunctie in de Flask-toepassing.

Conclusie
Deze tutorial had als doel je te begeleiden bij het opzetten van een Python Flask API Docker-container met behulp van Docker-images. Je hebt ook geleerd hoe je Python Flask-containers kunt starten met behulp van Dockerfiles, waarmee je aangepaste containers naar wens kunt bewerken en bouwen.
Dus, welke andere toepassingen heb je in gedachten om in een Docker-container te implementeren? Misschien een Docker MongoDB-container?