""

Dockerで始めるPython開発: 仮想環境(venv)なしで簡単にセットアップ

Dockerを利用する際、仮想環境 (venv) を使うことは一般的ではありません。Dockerコンテナ自体が仮想環境の役割を果たしているため、仮想環境を追加で作成する必要はありません。以下に、その理由とDockerを使った典型的なPython開発環境の設定方法を説明します。

Dockerを使用する理由

隔離された環境

Dockerコンテナは独立した環境を提供し、ホストシステムと分離された環境でアプリケーションを実行します。これにより、依存関係の衝突や環境の違いによる問題が回避されます。

軽量化

仮想環境 (venv) は通常、ホストシステム上でPythonの依存関係を管理するために使用されますが、Dockerコンテナ内では不要です。Dockerイメージ内で必要なPythonパッケージを直接インストールすることで、よりシンプルで効率的な設定が可能になります。

前提条件

以下のツールがインストールされていることが前提となります。

  • Python 3.12.2がインストールされていること。
  • Docker Desktop for Windows または Docker Desktop for Mac がインストールされており、かつ起動していること。
  • Visual Studio Code (VSCode) がインストールされていること。

Dockerを使ったPython開発環境の設定方法

以下の手順で、仮想環境 (venv) を使わずにDockerのみでPython開発環境を設定します。

プロジェクトディレクトリの準備

まず、プロジェクトディレクトリを以下のように構成します。

project/
├── apps/
│   ├── __init__.py
│   └── app.py
├── Dockerfile
├── docker-compose.yml
└── requirements.txt

Flaskアプリケーションの作成

apps/app.py ファイルに以下の Python コードを追加します。

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

apps/__init__.py ファイルは空のままで構いません。

Dockerfileの作成

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

# Use the official Python image from the Docker Hub
FROM python:3.12.2-slim

# Set the working directory in the container
WORKDIR /app

# Copy the requirements.txt file into the container at /app
COPY requirements.txt /app/

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Copy the current directory contents into the container at /app
COPY . /app

# Make port 5000 available to the world outside this container
EXPOSE 5000

# Run blogapp.py when the container launches
CMD ["python", "apps/blogapp.py"]

requirements.txtの作成

requirements.txt ファイルを作成し、以下を追加します。

version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app

この設定により、ホストマシンのカレントディレクトリ(blogproject)がコンテナの /app ディレクトリと同期されます。

Dockerコンテナのビルドと起動

以下のコマンドを使用して、Dockerコンテナをビルドし、起動します。

docker-compose build
docker-compose up

この構成により、VSCodeでホストマシン上のファイルを編集すると、その変更が即座にコンテナ内に反映されます。また、コンテナ内での変更もホストマシンに反映されるため、ホストマシン上でPythonやFlaskのソースファイルを直接見ることができます。

追加情報

アプリケーションの確認

アプリケーションが正しく起動した場合、ブラウザで http://localhost:5000 にアクセスして「Hello, World!」が表示されることを確認します。

VSCode で 「docker-compose up」後、プロジェクトが動いた後、 http://127.0.0.1:5000 を CTRL + クリックでブラウザが起動します。

Dockerコンテナのログ/ステータス確認

Dockerコンテナのログやステータスを確認するには、docker-compose logs コマンドを使用します。

新しいライブラリーの追加

新しいPythonライブラリを追加したい場合は、requirements.txt にそのライブラリを追加し、以下のコマンドを実行します。

docker-compose build
docker-compose up

または、Dockerコンテナが起動している状態で、コンテナ内に入って直接 pip install コマンドを使用してインストールすることもできます。

コンテナIDを確認

docker ps

このコマンドは、現在実行中のDockerコンテナの一覧を表示します。CONTAINER ID 列にコンテナIDが表示されます。

コンテナに入ります

docker exec -it <コンテナID> bash

<コンテナID> には、先ほど確認したコンテナIDを入力します。

パッケージをインストールします

pip install <パッケージ名>

例えば、requests パッケージをインストールする場合は以下のようにします。

pip install requests

この手順を踏むことで、仮想環境 (venv) を使わずに効率的なPython開発環境を構築できます。Dockerの利点を最大限に活用し、依存関係や環境の違いによる問題を回避することで、開発作業をスムーズに進めることができます。


コメント

コメントを残す