Skip to content

Un site Flask sous Docker

flask-stopwatch

Hello ! Dans cet article, nous allons voir comment utiliser Docker pour déployer un site web statique développé avec Flask (Web Framework en Python) depuis un dépôt Git.

L’avantage de Docker, comme vous le savez  sûrement, c’est de passer facilement « du laptop au datacenter ». Vous pourrez donc dans un premier temps coder votre site en local sur votre laptop puis le déployer rapidement sur le cloud-provider de votre choix.

Première étape, nous allons créer notre image Docker grâce à un fichier Dockerfile.

FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y python3-pip python3-dev build-essential
VOLUME /app
WORKDIR /app
RUN pip3 install flask
ENTRYPOINT ["python3"]
CMD ["app.py"]

Comme vous le voyez, on part d’une base Ubuntu, puis on installe tout ce qu’il faut pour notre site Flask (en Python3 svp). Vous pouvez aussi ajouter d’autres modules Python dans ce fichier.

On place ensuite notre Dockerfile et notre application dans le même dossier, pour cela il suffit par exemple de cloner le dépôt Git de votre site.
Il nous reste plus qu’à construire notre image avec cette commande :

docker build -t flask:latest .

Après un petit moment, notre image est finalement construite et disponible sur notre hôte Docker. Pour déployer encore plus vite, vous pouvez ajouter cette image sur le DockerHub afin de pouvoir la récupérer déjà construite.

On a plus qu’a lancer notre container grâce à cette commande :

docker run -d -v /chemin/vers/votre/app:/app -p 80:5000 flask

Votre site est maintenant joignable sur le port 80 de votre serveur (ou de votre laptop). N’oubliez pas que de base, Flask écoute uniquement sur localhost, pour changer cela, il faut mettre ces paramètres dans votre code Python :

if __name__ == "__main__":
    app.run(debug=False, host= '0.0.0.0')

Et voilà, un site statique facilement déployé grâce à Flask et Docker !
Je vous conseille, pour faire plus propre, d’utiliser Docker-compose afin de lancer un Reverse-Proxy Nginx en HTTPS qui pointera sur votre site Flask. En voici un exemple :

Published inCloudDockerLinuxPythonWeb server

2 Comments

  1. Hello,

    Je vois que tu utilise une version 2 du docker compose. Il te manque ‘services:’ qui doit encapsuler tout les containers 🙂

    • valentin valentin

      Merci de la relecture, je l’ai écrit un peu vite :p

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Proudly hosted with Open-sources Softwares.