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イメージを作成した。ディレクトリ構成は必要に応じて適宜変えればよい。

この記事が気に入ったらサポートをしてみませんか?