0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

こんにちは、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

compose.yml
services:
  python:
    build: ./python
    ports:
      - "5000:5000"

servicesの中に各コンテナ毎の設定を記述します。(今回はpythonコンテナのみ)
build: ./python では、pythonディレクトリ内にあるDockerfileを元にビルドします。

compose.yml
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

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

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を活用する場合に仮想環境を使うと便利なので、是非覚えていただければと思います🤩

最後までご覧いただきありがとうございました!
以上、センリツでした。🤓

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?