Help us understand the problem. What is going on with this article?

Pythonローカル開発環境構築テンプレート【Flask/Django/Jupyter with Docker + VSCode】

概要

ローカル環境を構築することには、それなりのコストを伴います。もちろんここで多少苦労したほうがよいという意見はすごく分かります。が、それで気持ちが削がれてしまうのももったいないと思う次第です。
そこで、Flask/Django/JupyterNotebook向けの Python開発環境構築を3コマンドで完了 させられるようなテンプレートを作成しました。(cdを除く)

前提条件

  • MacOSであること
  • gitおよびmakeコマンドが有効であること(デフォルトで有効なはず)

condaがインストールされている場合は、pipとのバッティングが発生し中途で失敗する可能性があります。

ローカル構築イメージ

Dockerコンテナ上でアプリを動かすことになります。よく分かっていなくても、Dockerコンテナを使って開発していると言うことができます。

Flask_Nginx_unicorn_diagramdrawio-local-template (1).png

  • bind mountによってホストPCからコンテナへのディレクトリ提供を行っています。これにより、ホストPC側で編集したファイルの内容をコンテナ側で読み込むことを実現しています。
  • ホストPCからのアクセスについては、ポートフォワーディングを採用しています。プロジェクトによってコンテナ側の接続ポートは変更していますが、フォワードするホスト側のポートはすべて8000番に統一しました。

構築手順

1. テンプレートをダウンロード

git cloneによるダウンロード方法を記載します。

Terminal
git clone git@github.com:mintak21/local-py-dev-template.git

2. テンプレートを開発用ディレクトリへ展開

展開先ディレクトリを指定して、プロジェクトの展開を行います。
作成したプロジェクトに応じて、makeコマンドを使い分けます。

Terminal
cd local-py-dev-template
# jupyterプロジェクトを作成する場合
make create_jupyter_pj
# flaskプロジェクトを作成する場合
make create_flask_pj
# djangoプロジェクトを作成する場合
make create_django_pj
  • 指定可能な引数
引数名 概要 省略時値
TARGET_DIR 展開先ディレクトリ(存在しない場合は作成) ~/workspace/project
DJANGO_PJ_NAME djangoの場合に指定可能。Djangoテンプレートのプロジェクト名 mysite

引数を指定したコマンド例

Terminal
# 1つ上の階層のflask_dirディレクトリにflaskプロジェクトを展開
make create_flask_pj TARGET_DIR=../flask_dir
# ~/workspaceディレクトリにdjangoプロジェクトを展開、djangoプロジェクト名はblogとする
make create_django_pj TARGET_DIR=~/workspace DJANGO_PJ_NAME=blog

3. コンテナ起動

2にて展開したディレクトリへ移動し、Dockerイメージ、コンテナを作成、起動を行います。

Terminal
cd ${TARGET_DIR}
make run

4. 接続

いずれのコンテナもホストPCの8000番ポートでのポートフォワーディングを行なっているので、以下にアクセスすることができれば接続ができ、記載している内容が表示されていれば設定完了です。

アクセス先: http://localhost:8000/

プロジェクト 期待結果
Jupyter Jupyterホーム画面で、HelloPython.ipynbファイルが見えている
Flask Hello Flask!と表示されている
Django ロケットが出ている

5. コンテナ停止(Shutdown)

Foregroundで実行しているため、ターミナル上のプロセスを停止することでコンテナが停止します。

ターミナルでCtrl + C

おまけ. Visual-Studio-Codeセットアップ

ここまでで、起動と接続が出来たので、これ以降は開発を進めていくことになります。
開発エディタにはVimpytorchなどもありますが、ここではVisual-Studio-Codeを用いて開発を進められるようにしています。
導入は1コマンドで完了します。

Terminal
make setup_vscode # local-py-dev-templateディレクトリで実行

設定概略

単にVisual-Studio-Codeをインストールするだけではなく、静的解析やpytestなどの設定、必要&有用な拡張機能の導入も同時に行うようにしています。

  1. brew caskによるVisual-Studio-Codeのインストール
  2. パッケージ導入(pip)
    • 静的解析:flake8
    • import整列:isort
    • フォーマッタ:autopep8
    • typeチェック:mypy
    • テスト:pytest
  3. 拡張機能導入(code --install-extension)
    • Microsoft-Python : Python拡張ツール(必須)
    • Bracket Pair Colorizer : 対応するかぎかっこが色で見やすくなる
    • Whitespace+ : タブと空白を可視化
    • Docker : vscodeでDockerが扱える
    • vscode-icons : アイコンを見やすくする
    • autoDocString : DocString作成補助

Others

ローカル側もpipenvなどの仮想環境を利用すべきかもしれませんが、自分の知るpythonicな諸先輩方はピュアPythonを使っていることが多かったため、これに倣い仮想環境は導入していません。

Reference

Githubリポジトリ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした