Python
Docker
フロントエンド
docker-compose

フロントエンド開発者向けのDockerによるPython開発環境構築


概要

機械学習、AI、データサイエンス領域が熱い今、最も注目を浴びてる言語の1つがPythonだと思います。

ここではPythonをこれから学ぶ方へのファーストステップとしてフロントエンド開発者的にはとっつきやすい簡易API作成をDocker,Pythonを使って行います。

それによってPython開発環境の準備ができればと思います。


環境


環境構築

https://github.com/hikarut/Python-dev


Docker準備

以下ファイルを作成します。


docker-compose.yml

version: '3'

services:
python3:
restart: always
build: .
container_name: 'python3'
ports:
- "8000:8000"
working_dir: '/root/'
tty: true
volumes:
- ./src:/root/src/
- ~/.zshrc:/root/.zshrc

.zshrcファイルはローカルで使っているものとコンテナにログインした時に同じようにシェルを使ってみたかったという理由でマウントしてあります。あまり本質的ではないので、不要なら削除しておいた方が良いです。


Dockerfile

FROM python:3

USER root

RUN apt-get update
RUN apt-get install -y vim less
RUN apt-get install -y zsh less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8

EXPOSE 8000
CMD ["bash"]



Dockerコマンド

以下よく使うDockerコマンドです。


  • コンテナを起動

$ docker-compose up -d


  • プロセス確認

$ docker-compose ps


  • コンテナ内に入る(zsh)

$ docker-compose exec python3 zsh


  • bashで入る場合

$ docker-compose exec python3 bash


  • ビルド処理の反映(Dockerfileの反映)

$ docker-compose up -d --build


  • log確認

$ docker-compose logs python3


  • コンテナ削除

$ docker-compose down


Python開発用のエディタ

Kiteというエディタが良さそうだったので試してみます。

Kiteを入れるだけでAtom、VSCode、Vim、PyCharmなどのエディタで補完をしてくれます。

フロントエンド開発で普段使っているエディタをそのまま使えそうで良いです。

参考:Pythonで開発するならKiteを導入して爆速開発 - Qiita


FastAPIを試してみる


概要

FastAPIはPython製のAPIフレームワークです。名前の通り非常に高速なのが特徴です。

また自動でSwaggerのドキュメントも生成してくれるのでフロントエンド開発のAPIモック作成とかにも使えそうです。

https://fastapi.tiangolo.com/


インストール


  • 準備したdockerコンテナ上にFastAPIをインストール

$ docker-compose exec python3 pip install fastapi uvicorn


  • ローカルでマウントされている/src以下にmain.pyファイルを作成


main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}



  • FastAPIを実行

$ docker-compose exec python3 zsh -c "cd src && uvicorn main:app --host 0.0.0.0 --reload"

※uvicornはデフォルトホストが127.0.0.1になっていますが、ローカルからポートフォワードされている0.0.0.0を指定します。

参考:Uvicorn


感想

今回はフロントエンド開発者がまずはPythonの開発環境になれるようにFastAPIを使って簡単なAPIを作成するのを試してみました。Dockerの環境で自由にPythonを触れるのでそこでAPI以外にも色々な開発ができるかなと思います。

FastAPIのように軽量で高速なフレームワークがあると、フロントエンドで使うAPIの開発でも今後Pythonが選択されることが増えてくるかなと思うので、Pythonに慣れておくのは非常に重要だなと感じています。


参考