Dockerで自分用Pythonコンテナを作成する
概要
Pythonコンテナを作成する。
その際にpython実行用のユーザとPGMを配置するディレクトリを作成する。
やったこと
Dockerfileの作成
以下のように作成する。
FROM python:3.9
WORKDIR /usr/src/app
ARG passwd
RUN groupadd -g 61000 batch
RUN useradd -u 61001 -g 61000 -m \
-p $(perl -e 'print crypt(${passwd}, "\$6\$salt03")') \
-s /bin/bash pybatch
USER pybatch
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
RUN mkdir ~/bin
Pythonのイメージは公式配布のものを使用。今回はバージョン3.9を使用。
作業場所に/usr/src/appを指定したけど、pybatchユーザでファイルをコピーできる環境で適当な場所ならどこでもよい。
batchグループを作成後、pybatchユーザを作成してbatchグループを指定する。パスワードはbuild時に引数として渡す。
requirements.txtはDockerfileと同じディレクトリにあらかじめ作成しておく。
requirements.txtをもとにpip installする。
最後にpybatchユーザのホームディレクトリにPGMを配置するためのディレクトリとしてbinを作る。
Dockerイメージのビルド
以下のコマンドでDockerイメージを作成する。
docker build --build-arg passwd=passwd -t python-image .
作成したイメージを確認する。
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
python-image latest 55268f3cf9a1 26 minutes ago 963MB
Dockerコンテナの作成・起動
以下のコマンドでDockerコンテナを作成・起動する。
コンテナ作成後起動し続けるようにするために/bin/bashを追加する。
docker run -v [ローカルのmountディレクトリのフルパス]:/home/pybatch/bin \
--name python-container -itd python-image /bin/bash
作成したコンテナを確認する。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4931aef7b33 python-image "/bin/bash" 28 minutes ago Up 28 minutes python-container
Dockerコンテナに入り、問題ないか確認
以下のコマンドでDockerコンテナに入る。
docker exec -it python-container /bin/bash
Pythonのバージョンとpip listを確認する。
pybatch@a4931aef7b33:/usr/src/app$ python -V
Python 3.9.12
pybatch@a4931aef7b33:/usr/src/app$ pip list
以下略
ディレクトリも確認する。
pybatch@a4931aef7b33:~$ ls -l
total 4
drwxr-xr-x 2 pybatch batch 4096 May 2 03:10 bin
pybatch@a4931aef7b33:~$ cd ~/bin
pybatch@a4931aef7b33:~/bin$ ls -l
省略(ローカルに配置したPGMがあればOK)
最後に
Pythonを実行する際に最低限必要と思われる処理だけを組み込んだDockerイメージを作成した。ディレクトリ構成は必要に応じて適宜変えればよい。
この記事が気に入ったらサポートをしてみませんか?