Flask docker HelloWorld PyCharm

今回は、FlaskをDocker上で動作させて、HelloWorldを表示するメモとなります。

IDEはPyCharmを利用していますので、以下のDocker版となります。

Flask HelloWorld PyCharm

Dockerが動作可能な前提の内容となっています。

https://docs.docker.com/get-started/

また、有償版のPyCharmを利用した内容になりますが(特にDockerの部分)、

無償版のPyCharmや他のIDEでも、Dockerコマンドを実行頂ければ、再現できると思います。

環境

  • macOS:Big Sur 11.5.2
  • PyCharm:2022.2.2 (Professional Edition)
  • Docker:20.10.12


事前準備

PyCharmのプロジェクトを作成する前に、2つのファイルを用意します。

2つのファイルは、後にPyCharmのプロジェクトのディレクトリとして指定する場所に配置します。

※事前に用意する理由は、後述の補足②に記載しています。

PyCharm Flask Project

  • app/app.py

    import os
    
    from flask import Flask
    
    port = int(os.environ['PORT'])
    app = Flask(__name__)
    
    @app.route('/')
    def index():
    return 'Hello World! Start Flask on Docker using Pycharm.'
    
    if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

    PyCharm Flask Sample
    PyCharm Flask Sample
  • Dockerfile

    FROM python:3.10.8-slim-buster
    
    RUN pip install --upgrade pip
    
    RUN pip install flask==2.2.2
    
    ENV PORT 5000
    
    WORKDIR /app
    
    COPY ./app /app
    
    CMD ["python", "app.py"]

Python Flask Dockerfile

[参考]

DockerHub:https://hub.docker.com/_/python

Flask:https://flask.palletsprojects.com/en/2.2.x/changes/


新規プロジェクト作成

事前にファイルを準備したら、

PyCharmより新規プロジェクトを作成します。

PyCharm New Project

Locationの部分は、事前にファイルを用意したディレクトリを指定して、Createボタンをクリックします。

PyCharm New Project

Directory Is Not Empty の確認メッセージが表示されたら、

Open Projectをクリックします。

Create from Existing Sourcesでも良いですが、不要なPython実行用のenvフォルダが生成されます。

PyCharm Flask Project

以下の様にプロジェクトが作成されます。

PyCharm Flask Project


Current Interpreter設定・Docker設定

次に、Pythonの実行を担うInterpreterの設定と、Dockerの設定を行います。

(Interpreterの設定時にDockerの設定も必要となるため、同時に行ってしまいます)

こちらの設定は、Dockerを実行可能な状態で行ってください。

 

画面下部の現在のCurrent Interpreter(プロジェクト生成時に指定したPythonの実行名)をクリックします。

PyCharm Current Interpreter

(もしかしたら、No interpreterと表示されている場合もあるかもしれません)

PyCharm Python Interpreter

その後、Add New Interpreter -> On Docker… をクリックします。

PyCharm Current Interpreter

NewTarget: Docker画面が表示されたら、

Docker serverの「」ボタンをクリックして、Dockerの設定を追加します。

PyCharm New Target Docker

+プラスマークをクリックします。

PyCharm New Target Docker

Nameに任意の識別名称を入力し、Connect to Docker daemon with の部分を指定します。

私の場合、Docker for Mac を利用しているのでそのままOKボタンをクリックしました。

※OKを押す前に、Dockerが動いていないとエラーになります。

PyCharm New Target Docker

Docker server の準備ができたら、

Dockerfileの部分を、用意済みのDockerfileで指定します。

PyCharm Dockerfile

指定ができたらNextボタンをクリックします。

正常にDockerイメージのビルドが済むと、右下のCurrent Interpreterの部分に反映されます。

PyCharm Current Interpreter

 


Docker コンテナ起動 動作確認

プロジェクトが開けて、Current Interpreterの設定も済んだら、

Dockerコンテナを起動して動作確認を行います。

まず、画面下部のServicesの部分を開きます。

先ほど登録したDockerの名称が表示されていますので、

そちらを選択し、右クリックメニューのDeployをクリックします。

PyCharm Services Docker Deploy

Deploy Configurationが表示されたら、Create Dockerfile Deployment…をクリックします。

PyCharm Services Docker

Create Dockerfile Deployment画面が表示されたら、

ServerとDockerfileが、用意したものになっている事を確認します。

(異なるものが指定されている場合、変更します。)

PyCharm Docker Modify

続けてModifyのメニューを表示し、Run optionsをクリックします。

PyCharm Services Docker Run options

Run optionsの欄が表示されたら、以下の様に入力してOKボタンをクリックします。

OKボタンをクリックすると、Dockerコンテナのビルドが行われます。

-p 5000:5000

PyCharm Docker build

コンテナがビルドされて起動すると、Logのコンソールに起動ログが表示されます。

PyCharm Docker container run

ログに表示されているエンドポイントにブラウザでアクセスして、

app.pyの戻り値が正常に表示されていれば、起動確認も完了です。

PyCharm Services Docker http

停止は、Servicesのところから行えます。

PyCharm Services Docker stop

 


補足① ソース修正・反映

Python・Flaskはコンテナ内で動作しておりますので、

app.pyのソースを変更して、コンテナを再起動などしても内容は反映されません。

PyCharm Services Docker recreate container

内容を反映させたい場合には、Serviceのところで起動しているコンテナを選択し、

Recreate Containerを行います。

PyCharm Services Docker recreate container

コンテナを再作成後、再度アクセスすると、内容が反映されています。PyCharm Services Docker recreate container

 

 


補足② PyCharm Interpreter エラー

手元で確認している際に、Current Interpreterの設定が上手くいかない現象を確認しましたので、

内容をメモしておこうと思います。

PyCharmでプロジェクトを新規作成する際に、Current Interpreterの設定を同時に行うと、

以下のエラーメッセージが表示され、プロジェクトを生成出来ませんでした。

This interpreter type does not support remote project creation

This interpreter type does not support remote project creation

色々と試してみましたが解消できず、

プロジェクトを生成した後に、Current Interpreterを設定すると上手くいきました。


以上が、今回のメモとなります。

個人的には、Dockerはコマンド実行した方が何かとしっくりくるのですが、

きちんとDockerfileを用意しておけば、ボタンで実行できるので楽かもしれません。

ただ、色々と試していると、

ついつい、コンテナとイメージが乱立・残留してしまうと思いますので、

こまめに削除頂いた方が良いかと思います。

(右クリックメニューから削除なども行えます)

PyCharm Services Docker

また、こちらの内容では以下の対応を行えませんでした。

  • デバッグ実行できない
  • ソース修正後、サービスに反映させる場合、コンテナの作り直しが必要

Docker Composeを利用した場合、これらに対応できたため、その内容もメモさせて頂きました。

PyCharm Flask Docker compose HelloWorld

 


都内でエンジニアをやっています。 2017年に脱サラ(法人設立)しました。 仕事で調べたことや、気になったことをメモしています。
投稿を作成しました 139

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る