[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

参考文献はこちら

https://qiita.com/jhorikawa_err/items/fb9c03c0982c29c5b6d5

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*