DockerでPython開発環境を綺麗に構築する方法

Python開発には様々なライブラリやフレームワークが必要で、その環境構築が複雑になることも珍しくありません。
この記事では、Dockerを用いてPythonの開発環境をスムーズに、そして綺麗に構築する方法をご紹介します。
簡単な「Hello World」プログラムを動かすところまでを解説します。

目次

Dockerを使うメリット

dockerは、アプリケーションをコンテナと呼ばれる隔離された環境で実行するためのツールです。これには数多くのメリットがあります。

  • 環境統一: チーム全員が同じDocker環境を共有することで、”でもうちのPCでは動くよ”といった事態を防ぎます。
  • 軽量化: 仮想マシンと比較して、Dockerコンテナは軽量であり、リソースを効率よく利用できます。
  • 迅速な構築: Dockerfile一つで開発環境をコード化し、どこでも簡単に再現できます。
  • 開発環境の維持: Dockerの環境に集約できるので、開発しているPCの環境を汚さないで済みます。

Dockerのインストール方法

Dockerのインストールは簡単です。Docker公式サイトから使用しているPCのOSに合致したDockerをダウンロードし、インストーラに従ってインストールを進めてください。

インストール後、コマンドラインまたはターミナルを開き、docker --versionを実行してインストールが成功していることを確認しましょう。

Python開発環境のDocker化

では、具体的にPython開発環境のDocker化を進めていきましょう。必要なファイルは主に3つです。

  • Dockerfile
  • docker-compose.yml
  • requirements.txt

Dockerfile

Dockerfileをプロジェクトのルートディレクトリに作成し、以下の内容を追加します。

# イメージのベース
FROM python:3.8

# 作業ディレクトリの設定
WORKDIR /app

# 必要なファイルをコピー
COPY . /app

# 必要なライブラリのインストール
RUN pip install --no-cache-dir -r requirements.txt

# コンテナ起動時に実行されるコマンド
CMD ["python", "./app.py"]

docker-compose.yml

docker-compose.ymlファイルもプロジェクトのルートに作成し、以下のような設定を行います。

version: '3.8'
services:
  app:
    build: .
    volumes:
      - .:/app
    ports:
      - "8000:5000"

requirements.txt

Pythonのプロジェクトでは、使用する外部ライブラリをrequirements.txtに記載します。例えば、Flaskを使いたい場合は下記のようにします。
バージョンを指定したい場合はFlask==version番号というような書き方も可能です。今回は最新版をインストールしたいので、バージョン指定は行いません。

Flask

Hello Worldを動かす

最後に、簡単なHello Worldプログラムapp.pyをDocker環境で動かしてみましょう。

# app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0')

そして、docker-composeコマンドでビルドと起動を行います。

docker-compose up --build

起動後、ブラウザでhttp://localhost:8000にアクセスし、Hello, World!が表示されれば成功です。

まとめ

Dockerを使用したPythonの開発環境構築を紹介しました。Dockerは環境差異を減らし、開発の効率化に貢献してくれます。そして、この記事がPythonとDockerの旅の第一歩となれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

アキレアソフト代表の大山亮です。

週休完全4日の会社を設立するべく色々事業を進めています。
スキル:EM/PjM/フルスタックエンジニア/1on1/管理職

週休完全4日の野望に協力してくれる方も募集しています。
投資も趣味でやってます。

コメント

コメントする

目次