[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/optdocker-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 --buildMacBook-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 bashMacBook-Pro:testpj1$ docker compose exec python3 bash
root@bf7543ab1474:~# うまくコンテナに接続できればプロンプトが上記のように[root]となります。
lsコマンドで先ほど作成したsample.pyがあるかどうか確認します。
root@bf7543ab1474:~# ls 
opt
root@bf7543ab1474:~# ls opt/
sample.pypythonを動かすために必要なライブラリをインストールします。
python -m pip install numpy上記が完了したら下記のコマンドでsample.pyを実行してみてください。
python opt/sample.py 180root@bf7543ab1474:~# python opt/sample.py 180
3.141592653589793上記の確認ができれば今回のチュートリアルは完了です。
コンテナ接続を解除します。
exit次にdockerコンテナを除去します。
docker compose downMacBook-Pro:testpj1$ docker compose down
[+] Running 2/2
 ⠿ Container python3        Removed                                                                                  10.4s
 ⠿ Network testpj1_default  Removed  これで後片付けも完了です。
・Appendix
参考文献はこちら
コメントを残す