Lors de l'exécution d'un programme Python avec PyCharm, je souhaite l'exécuter dans un conteneur à l'intérieur de Docker au lieu de Python installé sur mon PC local. Plus précisément, je souhaite exécuter une application Web Flask à partir de PyCharm sur Docker.
Cliquez ici pour l'environnement.
Cette fonctionnalité n'est pas disponible dans PyCharm Community Edition.
Démarrez PyCharm et sélectionnez [Configurer] - [Préférence]
Sélectionnez [Interpréteur Python] et cliquez sur l'icône d'engrenage sur le bord droit de l'écran → [Ajouter ...]
Sélectionnez [Docker] → cliquez sur [Nouveau] sous [Serveur]
Sélectionnez [Docker pour Mac] → Confirmez que [Connexion réussie] s'affiche en bas de l'écran, puis cliquez sur [OK].
Entrez python: 3.8
dans [Nom de l'image] et python
dans [Chemin de l'interpréteur Python] → [OK]
Confirmez que [l'interpréteur Python] est comme suit → [OK]
Sélectionnez [Nouveau projet]
Sélectionnez [Interpréteur existant] → Sélectionnez Python dans Docker créé par [Interprète]
Il dit [Chemin distant non fourni], alors entrez un chemin approprié. Ensuite, on dit que "Ce type d'interpréteur ne prend pas en charge la création de projet à distance". [Créer] ne peut pas être pressé.
Pour le moment, si vous recherchez sur Google avec le message d'erreur qui est sorti plus tôt, la page d'assistance officielle et YouTrack (système de suivi des problèmes JetBrains) apparaîtront, alors jetons un coup d'œil.
Tout d'abord, Page d'assistance Vu de, cela semble être le même phénomène.
La réponse dit: "Créez un projet en Python sur votre système et ajoutez un interpréteur sur Docker à partir de vos paramètres!"
Cependant, cette page, celle d'octobre 2017, reste la même ...
Puis YouTrack. C'est aussi 2017 ...
Cette réponse dit également: "J'ai ouvert le dossier avec Open et puis défini l'interpréteur!"
Créez des dossiers, fichiers, etc. qui sont écrits sur la page de support JetBrains et YouTrack, puis ouvrez-les avec PyCharm.
J'ai fait référence au blog officiel JetBrains. (La recherche de "Flask PyCharm Docker" a été un succès)
Docker-Compose: Getting Flask up and running
flask-docker
├── Dockerfile
├── docker-compose.yml
├── main.py
└── requirements.txt
Dockerfile
FROM python:3.8-alpine3.12
RUN mkdir /app
WORKDIR /app
COPY main.py main.py
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
CMD python main.py
docker-compose.yml
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
requirements.txt
Flask==1.1.1
main.py sera créé plus tard.
Sur l'écran de démarrage PyCharm, sélectionnez [Ouvrir] → le dossier créé.
Préférence → [Projet: (nom du projet)] - [Interpréteur Python] → Cliquez sur l'icône d'engrenage sur le côté droit de l'écran
Sélectionnez [Docker Compose] → Sélectionnez [Docker](créé à l'étape précédente) dans [Server], docker-compose.yml dans le projet dans [Configuration file (s)], et sélectionnez [web] dans [Service]. → [OK]
Assurez-vous que la bibliothèque écrite dans requirements.txt comme Flask est incluse [OK]
main.py
from flask import *
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port='5000')
Les articles liés à Flask peuvent également être complétés sur PyCharm! !! !!
Si vous utilisez Docker au lieu de Docker Compose, la complétion sur PyCharm ne fonctionnera pas. Probablement, dans le cas de Docker, il semble qu'il soit exécuté par la commande
docker run
, donc je pense que le Dockerfile n'est pas utilisé.
Faites un clic droit sur main.py → [Exécuter] ou Ctrl + Maj + R (pour Mac)
Console PyCharm
/usr/local/bin/docker-compose -f /Users/tada/IdeaProjects/flask-docker/docker-compose.yml -f /Users/tada/Library/Caches/JetBrains/PyCharm2020.2/tmp/docker-compose.override.272.yml up --exit-code-from web --abort-on-container-exit web
Recreating flask-docker_web_1 ...
Attaching to flask-docker_web_1
web_1 | * Serving Flask app "main" (lazy loading)
web_1 | * Environment: production
web_1 | WARNING: This is a development server. Do not use it in a production deployment.
web_1 | Use a production WSGI server instead.
web_1 | * Debug mode: off
web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Accès depuis curl dans le terminal
$ curl localhost:5000
Hello!
Tu l'as fait! !!