[A-00128]Dockerでpythonを動かしてみる
dockerにpython稼働環境を作成して、pythonをコンテナ内で実行するまでの手順を記載しておく
・作業用ディレクトリ作成
適当なディレクトリを作成してそこで作業する
mkdir testpj1 && cd testpj1
・資材を作成する
まずはDockerの環境を定義したファイルを作成します。
touch Dockerfile && chmod 777 Dockerfile
下記のコードを記載します。
FROM python:3.9-slim
USER root
RUN apt-get update
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN python -m pip install jupyterlab
次にcompose.yaml(docker-compose.yml)を作成します。作成する場所はDockerfileと同じ場所で良いです。
version: "3"
services:
python3:
restart: always
build: .
container_name: 'python3'
working_dir: '/root/'
tty: true
volumes:
- ./opt:/root/opt
docker-compose.ymlで定義したvolumesの[./opt]を作成します。
mkdir opt && cd opt && touch sample.py && chmod 777 sample.py
上記のコマンドでdockerコンテナ内で動かすpythonファイルを作成しました。
sample.pyの中身は下記のコードです。
import math
import sys
def main():
val = float(sys.argv[1])
print(math.radians(val))
if __name__ == "__main__":
main()
上記でコンテナを動かすための資材が揃いました。
下記のコマンドをターミナルで実行して、dockerコンテナを作成します。
docker compose up -d --build
MacBook-Pro:testpj1 $ docker compose up -d --build
[+] Building 2.5s (12/12) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 32B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/python:3.9-slim 2.2s
=> [auth] library/python:pull token for registry-1.docker.io 0.0s
=> [1/7] FROM docker.io/library/python:3.9-slim@sha256:42a5da33675ec5a692e8cdbb09ffa4e39588c10dd9a96235e543c49 0.0s
=> CACHED [2/7] RUN apt-get update 0.0s
=> CACHED [3/7] RUN apt-get -y install locales && localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 0.0s
=> CACHED [4/7] RUN apt-get install -y vim less 0.0s
=> CACHED [5/7] RUN pip install --upgrade pip 0.0s
=> CACHED [6/7] RUN pip install --upgrade setuptools 0.0s
=> CACHED [7/7] RUN python -m pip install jupyterlab 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:245e65a7bd86f9c0807c31d41abbcf398a6e2b5c4852eca0c1a8b7003eb31e3c 0.0s
=> => naming to docker.io/library/testpj1_python3 0.0s
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
[+] Running 2/2
⠿ Network testpj1_default Created 0.2s
⠿ Container python3 Started
次にコンテナに接続します。
docker compose exec python3 bash
MacBook-Pro:testpj1$ docker compose exec python3 bash
root@bf7543ab1474:~#
うまくコンテナに接続できればプロンプトが上記のように[root]となります。
lsコマンドで先ほど作成したsample.pyがあるかどうか確認します。
root@bf7543ab1474:~# ls
opt
root@bf7543ab1474:~# ls opt/
sample.py
pythonを動かすために必要なライブラリをインストールします。
python -m pip install numpy
上記が完了したら下記のコマンドでsample.pyを実行してみてください。
python opt/sample.py 180
root@bf7543ab1474:~# python opt/sample.py 180
3.141592653589793
上記の確認ができれば今回のチュートリアルは完了です。
コンテナ接続を解除します。
exit
次にdockerコンテナを除去します。
docker compose down
MacBook-Pro:testpj1$ docker compose down
[+] Running 2/2
⠿ Container python3 Removed 10.4s
⠿ Network testpj1_default Removed
これで後片付けも完了です。
・Appendix
参考文献はこちら
コメントを残す