はじめに
こんにちは、H×Hのセンリツ大好きエンジニアです。(同担OKです😉)
今回は初学者の方向けに、Pythonを仮想環境で動かすというものをやっていきます。
仮想環境で動かすことで、ローカル環境を汚さなくても良いのでオススメです😁
Dockerとは
Dockerとは、軽量で高速に動作するコンテナ型仮想環境用のプラットフォームです。
こちらを用いることで開発者間での環境の違いを気にせずに、同じ状態で作業を行えるようになります。
詳しいことは、こちらをご覧ください(とても分かりやすいです😊)
今回はPythonコンテナだけですが、後々データベースなどのコンテナが必要になることを考え、Docker Composeというものも使用します!
Docker Composeとは
Docker Composeは、Dockerコンテナの複数管理を容易に行えるツールです。
Dockerは一度に一つのコンテナしか操作できないのに対し、Docker Composeを使うことで一気に複数コンテナ(アプリコンテナ、データベースコンテナなど)を動かすことができるという点がメリットになります。
環境構築してみよう
今回のディレクトリ構成はこちらになります。
. /root
├── compose.yml
└── python
├── Dockerfile
├── app.py
└── requirements.txt
それぞれのファイルは以下の内容になります。
-
compose.yml
:Docker Composeの設定ファイル -
Dockerfile
:Dockerイメージ(コンテナの設計書)を作るための設定ファイル -
app.py
:Python アプリケーションのメインスクリプトファイル -
requirements.txt
:Python パッケージの依存関係を記述するファイル
一つずつ見ていきましょう
compose.yml
services:
python:
build: ./python
ports:
- "5000:5000"
services
の中に各コンテナ毎の設定を記述します。(今回はpythonコンテナのみ)
build: ./python
では、pythonディレクトリ内にあるDockerfile
を元にビルドします。
ports:
- "5000:5000"
portsで、ホストの5000ポートをコンテナの5000ポートにマッピングしています。
これにより、http://localhost:5000
にアクセスすると、コンテナ内のアプリケーションにアクセスできるようになります。
Dockerfile
# Pythonのイメージ
FROM python:3.9
# 作業ディレクトリを設定
WORKDIR /usr/src/python
# pipのアップデートと依存関係のインストール
COPY requirements.txt ./
RUN pip install --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
# ローカルのソースコードをコピー
COPY . .
# コンテナがリッスンするポートを指定
EXPOSE 5000
# コンテナ起動時に実行するコマンドを設定する
CMD ["python", "./app.py"]
大体はコメントに記述しているので、細かい部分だけ説明します。
# pipのアップデートと依存関係のインストール
COPY requirements.txt ./
RUN pip install --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
requirements.txt
をコピーし、pythonのパッケージ管理ツールであるpip
を使用してコンテナ内にパッケージをインストールします。
COPY requirements.txt ./
と RUN pip install -r requirements.txt
を分けることで、依存関係が変更されない限り、Docker のキャッシュを利用してビルド時間を短縮します。
--no-cache-dir
をつけることで、不要なキャッシュを作成しないようにします。
これにより、イメージのサイズが小さくなります。
app.py
import numpy as np
def main():
array = np.array([10, 20, 30, 40])
sum = np.sum(array)
print(sum)
if __name__ == "__main__":
main()
簡単に挙動を確認するだけなので、numpy
ライブラリを使用して配列内の合計値を出力するプログラムにしています。
requirements.txt
numpy
この中身は、pipでインポートするライブラリ名を記述します。
動作確認
それでは、実際に動かしてみましょう!
以下のコマンドでDockerイメージのビルドとコンテナの起動を行います。
docker compose up --build
まずビルドが走り、その後コンテナが起動してapp.py
が呼び出されていることが分かるかと思います!
[+] Building 0.7s (10/10) FINISHED
.
.
.
[+] Running 1/1
✔ Container python Recreated
Attaching to python
python | 100
python exited with code 0
これで、pythonをDockerコンテナ上で動かすことが出来ました!
おわりに
今回は簡単にpythonをコンテナ上で扱うためのHow toを紹介しました!
Webアプリケーションフレームワークを用いてWebサイトの開発をしたり、データ分析やAIを活用する場合に仮想環境を使うと便利なので、是非覚えていただければと思います🤩
最後までご覧いただきありがとうございました!
以上、センリツでした。🤓