
Python3をDockerでrequirements.txtを使用した環境構築
この記事はPython3をDockerによる環境構築をする為の備忘録記事です。pipパッケージやバージョンの決め打ちなどで、requirements.txtを使用した方法をアウトプットします。
※ docker-compose は使用しません。
事前準備・環境
既にDocker Desktop がインストールされていること、私はMacを使用しており、Intel CPUでOSは macOS Monterey 12.2.1 、エディタはPyCharmProfessionalで構築しました。
エディタを使用しなくてもターミナル等で対話型シェルを起動してPython3を実行できます。
※Pycharmの使用方法などは触れません。
作業手順
1. 作業フォルダを作成
2. Dockerfileとrequirements.txtを作成
3. 実行内容を記述
4. Docker image のビルド
5. コンテナの作成
6. Pyhton対話型シェルの起動
おわりに
1. 作業フォルダを作成
まずは、作業フォルダを自分作業しやすい場所に作成、私はデスクトップに作った。
フォルダ名はpython_lessonとした。
~/Desktop $ mkdir python_lesson
2. Dockerfileとrequirements.txtを作成
python_lesson フォルダの中に入ったら、Dockerfile と requirements.txt ファイルを作成する。
# python_lesson
~/D/python_lesson $ touch Dokcerfile requirements.txt
~/D/python_lesson $ ls
Dokcerfile requirements.txt
3. 実行内容を記述
構築したいDocker環境とpipパッケージのバージョンを記述する。
エディタでも vi でもやりやすい方でいいと思う。
Dockerfile
FROMはベースイメージであるpythonのバージョン3.9.0とした。
ENVはpythonの環境変数であるPYTHONUNBUFFERD 1とした。
RUNはイメージをビルドする際に使用するコマンド
WORKDIRは作業ディレクトリを指定
COPYはイメージにファイルやフォルダを追加する、Dokcerfileが置かれているディレクトリ内のファイルしか指定できない。
# Dockerfile
FROM python:3.9.0
ENV PYTHONUNBUFFERD
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
requirements.txt
pipのバージョンは21.2.4とした。
sampleprojectのバージョンは2.0.0とした。
# requirements.txt
pip==21.2.4
sampleproject==2.0.0
4. Docker image のビルド
Dockerをビルドしてイメージを作成する。
Dockerfileの置かれているカレントディレクトリに移動してDockerコマンドを実行する。
イメージ名をpylessonとした。
# python_lesson
~/D/python_lesson $ docker build -t pylesson .
イメージが出来たか確認
REPOSITORY にイメージ名が確認できれば成功。
# python_lesson
~/D/python_lesson $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pylesson latest df8364ab80a0 48 seconds ago 899MB
5. コンテナの作成
イメージからコンテナを作成して実行する。
コマンドは docker run -dit --name [コンテナ名] [イメージ名]
# python_lesson
~/D/python_lesson $ docker run -dit --name pyshell pylesson
コンテナが作成と実行ができたか確認する。
作成され、立ち上がっていれば問題なし。
# python_lesson
~/D/python_lesson $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6ea7a7465bf6 pylesson "python3" 12 minutes ago Up 12 minutes pyshell
6. Python対話型シェルの起動
Dockerの実行環境内でPython対話型シェルを立ち上げてみる。
コマンドは docker exec -it [コンテナ名] python3
シェルが立ち上がれば成功!
exit() でシェルを終了。
# python_lesson
~/D/python_lesson $ docker exec -it pyshell python3
Python 3.9.0 (default, Nov 18 2020, 13:28:38)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
おわりに
DockerによるPython3の環境構築をしてみました。
requirements.txtを使用してpipパッケージやバージョンの指定を目的としました。
私はPyCharmを使用しているので、インタプリタにこの設定を読み込めば直ぐに使用が可能です。
他にも方法はあると思いますが、とりあえずはといったことろです。