Ich habe versucht, ein Projekt mit Python on Docker mit PyCharm zu erstellen, aber es hat mit Docker Compose funktioniert

Was du machen willst

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.

Wenn Sie in 3 Zeilen schreiben

Wie es nicht funktioniert hat

Zuerst habe ich es auf PyCharm eingestellt

Starten Sie PyCharm und wählen Sie [Konfigurieren] - [Einstellungen]

スクリーンショット 2020-09-25 11.11.17.png

Wählen Sie [Python Interpreter] und klicken Sie auf das Zahnradsymbol am rechten Bildschirmrand → [Hinzufügen ...]

スクリーンショット 2020-09-25 11.11.56.png

Wählen Sie [Docker] → klicken Sie unter [Server] auf [Neu].

スクリーンショット 2020-09-25 11.15.11.png

Wählen Sie [Docker für Mac] → Bestätigen Sie, dass [Verbindung erfolgreich] am unteren Bildschirmrand angezeigt wird, und klicken Sie dann auf [OK].

スクリーンショット 2020-09-25 11.19.14.png

Geben Sie "Python: 3.8" in [Bildname] und "Python" in [Python-Interpreter-Pfad] → [OK] ein.

スクリーンショット 2020-09-25 11.21.29.png

Bestätigen Sie, dass [Python-Interpreter] wie folgt lautet → [OK]

Ich kann kein neues Projekt erstellen.

Wählen Sie [Neues Projekt]

スクリーンショット 2020-09-25 11.24.04.png

Wählen Sie [Vorhandener Interpreter] → Wählen Sie Python in Docker aus, das von [Interpreter] erstellt wurde.

スクリーンショット 2020-09-25 11.26.13.png

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.

スクリーンショット 2020-09-25 11.27.47.png

Suche nach der Ursache

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.

スクリーンショット 2020-09-25 11.29.10.png

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!"

Wie es funktioniert hat

Erstellen Sie Ordner, Dateien usw., die auf der JetBrains-Support-Seite und YouTrack geschrieben sind, und öffnen Sie sie dann mit PyCharm.

Referenzierte URL

Ich habe auf den offiziellen JetBrains-Blog verwiesen. (Die Suche nach "Flask PyCharm Docker" war ein Hit)

Docker-Compose: Getting Flask up and running

Erstellen von Ordnern, Dateien usw.

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.

Open + Docker Compose-Einstellungen in PyCharm

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

スクリーンショット 2020-09-25 14.04.10.png

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]

スクリーンショット 2020-09-25 14.04.48.png

Stellen Sie sicher, dass die in der Datei require.txt wie Flask geschriebene Bibliothek enthalten ist [OK]

スクリーンショット 2020-09-25 14.07.27.png

Quellcode erstellen

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.

Lauf

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

Ich habe versucht, ein Projekt mit Python on Docker mit PyCharm zu erstellen, aber es hat mit Docker Compose funktioniert
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Ich habe versucht, Docker unter Windows 10 Home zu installieren, aber es hat nicht funktioniert
Ich habe versucht, Java mit Termux unter Verwendung von Termux Arch zu verwenden, aber es hat nicht funktioniert
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
Als ich versuchte, eine VPC mit AWS CDK zu erstellen, konnte ich es aber nicht schaffen
Ein Memorandum beim automatischen Erwerb mit Selen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Python-Anfänger haben versucht, Bottle zu verwenden, und es hat unerwartet leicht funktioniert
Ich möchte Twitter mit Python twittern, bin aber süchtig danach
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
[Outlook] Ich habe versucht, mit Python automatisch eine tägliche Berichtsmail zu erstellen
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Drei Dinge, von denen ich süchtig war, als ich Python und MySQL mit Docker verwendete
Ich habe versucht, mit Selenium + Python einfach ein vollautomatisches Anwesenheitssystem zu erstellen
Ich habe mein Bestes versucht, um eine Optimierungsfunktion zu erstellen, aber es hat nicht funktioniert.
Ich habe versucht, Twitter Scraper mit AWS Lambda zu verwenden, aber es hat nicht funktioniert.
Plötzlich musste ich mit Python und Pyramid an einem Projekt arbeiten, also eine Notiz darüber, wie ich lerne
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich möchte mit einem Roboter in Python arbeiten.
[Python] Ich habe versucht, automatisch einen täglichen Bericht über YWT mit Outlook-Mail zu erstellen
Ich habe versucht, einen Pandas-Datenrahmen zu erstellen, indem ich mit Python Informationen zum Lebensmittelrückruf abgekratzt habe
Ich habe versucht, es ein- und auszuschalten, indem ich "Ein Plug-In erstellen, das Leerzeichen mit Sublime Text 2 in voller Breite hervorhebt" eingestellt habe.
Ich habe versucht, automatisch einen Bericht mit der Markov-Kette zu erstellen
Wenn ich versuche, mit Heroku zu pushen, funktioniert es nicht
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
Als ich versuchte, mithilfe von Anforderungen in Python zu kratzen, war ich süchtig nach SSLError, also einem Workaround-Memo
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Ich habe versucht, "Asciichart Py" zu verwenden, mit dem mit Python ein schönes Diagramm auf der Konsole gezeichnet werden kann.
Ich habe versucht, alle Bemerkungen von Slack mit Wordcloud (Python) zusammenzufassen.
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Wenn Pyplot mit Macosx-Backends in einer mit virtualenv erstellten virtuellen Umgebung verwendet wird, ist es besser, eine Umgebung mit Laufzeitfehler => venv zu erstellen.
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
[Kleine Geschichte] Ich kann es nicht finden, obwohl ich suche, um Python auf Ubuntu mit Docker zu installieren.
[Python] Ich habe versucht, die Nacht der Galaxienbahn mit WordCloud zu visualisieren!
Ich möchte es mit Python Lambda Django machen, aber ich werde aufhören
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Als ich versuchte, Python auszuführen, wurde ich zum Microsoft Store übersprungen
Erstellen Sie mit Mecab aus Python3 ein Tool, das Furigana automatisch mit HTML schüttelt
Ich habe versucht, ein Plug-In mit HULFT IoT Edge Streaming [Entwicklung] (2/3) zu erstellen.
Vorgehensweise zum Erstellen einer virtuellen Python-Umgebung mit VS-Code unter Windows