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!」が表示されることを確認します。
![](https://i0.wp.com/miyasols.com/wp-content/uploads/2024/06/vscode.png?resize=609%2C120&ssl=1)
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の利点を最大限に活用し、依存関係や環境の違いによる問題を回避することで、開発作業をスムーズに進めることができます。
コメントを残す