Wenn ich ein Python-Programm mit PyCharm ausführe, möchte ich es in einem Container in Docker ausführen, anstatt Python auf meinem lokalen PC zu installieren. Insbesondere möchte ich eine Flask-Webanwendung von PyCharm auf Docker ausführen.
Klicken Sie hier für die Umgebung.
Diese Funktion ist in der PyCharm Community Edition nicht verfügbar.
Starten Sie PyCharm und wählen Sie [Konfigurieren] - [Einstellungen]
Wählen Sie [Python Interpreter] und klicken Sie auf das Zahnradsymbol am rechten Bildschirmrand → [Hinzufügen ...]
Wählen Sie [Docker] → klicken Sie unter [Server] auf [Neu].
Wählen Sie [Docker für Mac] → Bestätigen Sie, dass [Verbindung erfolgreich] am unteren Bildschirmrand angezeigt wird, und klicken Sie dann auf [OK].
Geben Sie "Python: 3.8" in [Bildname] und "Python" in [Python-Interpreter-Pfad] → [OK] ein.
Bestätigen Sie, dass [Python-Interpreter] wie folgt lautet → [OK]
Wählen Sie [Neues Projekt]
Wählen Sie [Vorhandener Interpreter] → Wählen Sie Python in Docker aus, das von [Interpreter] erstellt wurde.
Es heißt [Remote-Pfad nicht angegeben], geben Sie also einen geeigneten Pfad ein. Dann heißt es: "Dieser Interpretertyp unterstützt keine Remote-Projekterstellung." [Erstellen] kann nicht gedrückt werden.
Wenn Sie mit der zuvor veröffentlichten Fehlermeldung googeln, werden vorerst die offizielle Support-Seite und YouTrack (JetBrains Issue Tracking System) angezeigt. Schauen wir uns das an.
Zunächst Support-Seite Von gesehen scheint es das gleiche Phänomen zu sein.
Die Antwort lautet: "Erstellen Sie ein Projekt in Python auf Ihrem System und fügen Sie aus Ihren Einstellungen einen Interpreter in Docker hinzu!"
Diese Seite, die vom Oktober 2017 stammt, bleibt jedoch dieselbe ...
Dann YouTrack. Dies ist auch 2017 ...
Diese Antwort sagt auch: "Ich habe den Ordner mit Öffnen geöffnet und dann den Interpreter eingestellt!"
Erstellen Sie Ordner, Dateien usw., die auf der JetBrains-Support-Seite und YouTrack geschrieben sind, und öffnen Sie sie dann mit PyCharm.
Ich habe auf den offiziellen JetBrains-Blog verwiesen. (Die Suche nach "Flask PyCharm Docker" war ein Hit)
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 wird später erstellt.
Wählen Sie im PyCharm-Startbildschirm [Öffnen] → den erstellten Ordner.
Einstellungen → [Projekt: (Projektname)] - [Python-Interpreter] → Klicken Sie auf das Zahnradsymbol auf der rechten Seite des Bildschirms
Wählen Sie [Docker Compose] → Wählen Sie [Docker](im vorherigen Schritt erstellt) in [Server], docker-compose.yml im Projekt in [Konfigurationsdatei (en)] und wählen Sie [Web] in [Service]. → [OK]
Stellen Sie sicher, dass die in der Datei require.txt wie Flask geschriebene Bibliothek enthalten ist [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')
Flaschenbezogene Artikel können auch auf PyCharm ergänzt werden! !! !!
Wenn Sie Docker anstelle von Docker Compose verwenden, funktioniert die Fertigstellung unter PyCharm nicht. Im Fall von Docker scheint es wahrscheinlich, dass es vom Befehl "Docker Run" ausgeführt wird, daher denke ich, dass die Docker-Datei nicht verwendet wird.
Klicken Sie mit der rechten Maustaste auf main.py → [Ausführen] oder Strg + Umschalt + R (für Mac).
PyCharm-Konsole
/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)
Zugang von Curl im Terminal
$ curl localhost:5000
Hello!
Du hast es geschafft! !!
Recommended Posts