J'ai essayé de créer un projet en utilisant Python sur Docker avec PyCharm, mais cela a fonctionné avec Docker Compose

Chose que tu veux faire

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.

Si vous écrivez en 3 lignes

Comment ça n'a pas marché

D'abord je l'ai réglé sur PyCharm

Démarrez PyCharm et sélectionnez [Configurer] - [Préférence]

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

Sélectionnez [Interpréteur Python] et cliquez sur l'icône d'engrenage sur le bord droit de l'écran → [Ajouter ...]

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

Sélectionnez [Docker] → cliquez sur [Nouveau] sous [Serveur]

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

Sélectionnez [Docker pour Mac] → Confirmez que [Connexion réussie] s'affiche en bas de l'écran, puis cliquez sur [OK].

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

Entrez python: 3.8 dans [Nom de l'image] et python dans [Chemin de l'interpréteur Python] → [OK]

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

Confirmez que [l'interpréteur Python] est comme suit → [OK]

Je ne peux pas créer un nouveau projet.

Sélectionnez [Nouveau projet]

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

Sélectionnez [Interpréteur existant] → Sélectionnez Python dans Docker créé par [Interprète]

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

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é.

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

Cherchez la cause

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.

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

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

Comment ça marche

Créez des dossiers, fichiers, etc. qui sont écrits sur la page de support JetBrains et YouTrack, puis ouvrez-les avec PyCharm.

URL référencée

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

Création de dossiers, fichiers, etc.

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.

Ouvrir les paramètres + Docker Compose dans PyCharm

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

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

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]

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

Assurez-vous que la bibliothèque écrite dans requirements.txt comme Flask est incluse [OK]

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

Créer du code source

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é.

Courir

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

Recommended Posts

J'ai essayé de créer un projet en utilisant Python sur Docker avec PyCharm, mais cela a fonctionné avec Docker Compose
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
J'ai essayé d'installer Docker sur Windows10 Home mais cela n'a pas fonctionné
J'ai essayé d'utiliser Java avec Termux en utilisant Termux Arch, mais cela n'a pas fonctionné
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
Quand j'ai essayé de créer un VPC avec AWS CDK mais que je n'ai pas pu le faire
Un mémorandum lors de l'acquisition automatique avec du sélénium
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
Les débutants en Python ont essayé d'utiliser Bottle et cela a fonctionné facilement de manière inattendue
Je veux tweeter Twitter avec Python, mais j'y suis accro
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
J'ai écrit un diagramme de configuration du système avec des diagrammes sur Docker
[Outlook] J'ai essayé de créer automatiquement un e-mail de rapport quotidien avec Python
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
Trois choses auxquelles j'étais accro lors de l'utilisation de Python et MySQL avec Docker
J'ai essayé de créer facilement un système de présence entièrement automatique avec Selenium + Python
J'ai fait de mon mieux pour créer une fonction d'optimisation, mais cela n'a pas fonctionné.
J'ai essayé d'utiliser Twitter Scraper avec AWS Lambda et cela n'a pas fonctionné.
Soudain, j'avais besoin de travailler sur un projet utilisant Python et Pyramid, donc une note sur la façon dont j'étudie
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
Je veux travailler avec un robot en python.
[Python] J'ai essayé de créer automatiquement un rapport quotidien de YWT avec la messagerie Outlook
J'ai essayé de créer un cadre de données pandas en grattant les informations de rappel d'aliments avec Python
J'ai essayé de l'activer / de le désactiver en définissant "Créer un plug-in qui met en évidence les espaces pleine largeur avec Sublime Text 2".
J'ai essayé de créer automatiquement un rapport avec la chaîne de Markov
Quand j'essaye de pousser avec heroku, ça ne marche pas
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer un environnement serveur qui fonctionne sous Windows 10
Quand j'ai essayé de gratter en utilisant des requêtes en python, j'étais accro à SSLError, donc un mémo de contournement
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de créer des taureaux et des vaches avec un programme shell
Je veux créer un fichier pip et le refléter dans le menu fixe
J'ai essayé d'utiliser "Asciichart Py" qui peut dessiner un beau graphique sur la console avec Python.
J'ai essayé de résumer les remarques de tout le monde sur le slack avec wordcloud (Python)
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
Lorsque pyplot est utilisé avec des backends macosx sur un environnement virtuel créé avec virtualenv, il est préférable de créer un environnement avec une erreur d'exécution => venv.
J'ai créé un script POST pour créer un problème sur Github et l'enregistrer dans le projet
[Petite histoire] Je ne peux pas le trouver même si je recherche pour installer Python sur ubuntu avec Docker
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
Je veux le faire avec Python lambda Django, mais je vais m'arrêter
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
Lorsque j'ai essayé d'exécuter Python, j'ai été ignoré dans le Microsoft Store
Créez un outil qui secoue automatiquement furigana avec html en utilisant Mecab de Python3
J'ai essayé de créer un plug-in avec HULFT IoT Edge Streaming [Development] (2/3)
Procédure de création d'un environnement virtuel Python avec VS Code sous Windows