19
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PyCharmでDocker上のPythonを使ってプロジェクトを作成しようとしたらダメだったけど、Docker Composeでうまくいった

Last updated at Posted at 2020-09-25

やりたいこと

PyCharmでPythonプログラムを実行する際、ローカルPCにインストールしたPythonではなく、Docker内のコンテナで実行したい。具体的には、FlaskによるWebアプリをPyCharmからDockerで実行したい。

環境はこちら。

  • macOS Catalina 10.15.6
  • PyCharm 2020.2.2 Professional Edition
  • Docker for Mac 2.3.0.5

この機能は、PyCharm Community Editionでは利用できません。

3行で書くと

  • PyCharmから[New Project]で新規プロジェクトを作成するとうまくできません
  • フォルダやファイルを作成してから、PyCharmで[Open]しましょう
  • DockerではなくDocker Composeを使いましょう

うまく行かなかった方法

まずPyCharmに設定してみた

PyCharmを起動して[Configure]-[Preference]

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

[Python Interpreter]を選択して、画面右端にある歯車アイコンをクリック→[Add...]

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

[Docker]を選択→[Server]の[New]をクリック

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

[Docker for Mac]を選択→画面下部に[Connection Successful]と表示されていることを確認してから[OK]

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

[Image name]に python:3.8 、[Python interpreter path]に python と入力→[OK]

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

[Python interpreter]が下記のようになっていることを確認→[OK]

いざ新規プロジェクトを作成・・・できない。

[New Project]を選択

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

[Existing interpreter]を選択→[Interpreter]で作成したDocker内Pythonを選択

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

[Remote path not provided]と言われるので、適当なパスを入力。すると「This interpreter type does not support remote project creation」などと言われてしまう。[Create]が押せない。

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

原因を探る

とりあえずさっき出たエラーメッセージでググると、公式サポートページやYouTrack(JetBrainsのイシュートラッキングシステム)が出てくるので、見てみます。

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

まずはサポートページから見てみると、どうやら同じ現象のようです。

回答には「システム上のPythonでプロジェクトを作って、設定からDocker上のインタープリターを追加してや!」と書いてあります。

しかしこのページ、2017年10月のものがそのままになってますね・・・。

次にYouTrack。これも2017年ですね・・・。

この回答にも「Openでフォルダを開いてからインタープリターを設定したらできたよ!」と書いてあります。

うまく行った方法

JetBrainsサポートページやYouTrackに書いてあった、フォルダやファイルなどを作成してからそれをPyCharmで開く作戦にします。

参考にしたURL

JetBrains公式ブログを参考にしました。(「Flask PyCharm Docker」で検索したらヒットした)

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は後ほど作成します。

PyCharmでOpen + Docker Composeの設定

PyCharm起動画面で[Open]→作成したフォルダを選択します。

Preference→[Project: (プロジェクト名)]-[Python interpreter]→画面右側の歯車アイコンをクリック

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

[Docker Compose]を選択→[Server]で[Docker](前の手順で作成したもの)、[Configuration file(s)]でプロジェクト内のdocker-compose.yml、[Service]で[web]を選択→[OK]

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

Flaskなど、requirements.txtに書いたライブラリが含まれていることを確認して[OK]

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

ソースコードの作成

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')

Flask関連のものも、PyCharm上で補完が効きます!!!

Docker ComposeではなくDockerにした場合、PyCharm上での補完が効きません。おそらく、Dockerの場合は docker run コマンドで実行しているっぽいので、Dockerfileが使われないのだと思います。

実行

main.py上で右クリック→[Run]またはCtrl+Shift+R(Macの場合)

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)
ターミナルでcurlからアクセス
$ curl localhost:5000
Hello!

やったね!!

19
25
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?