IT技術に関する情報掲載サイト

プログラミングに関することを掲載します。

Dockerを活用したPython環境構築の手順

Pythonは、ほぼ使ったことがないので、時間もあるので、勉強してみようかと思います。まずは、実行環境を作らないといけないのですが、Mac環境そのままにPythonをインストールをしていいのですが、せっかくなので、DockerでPythonをインストールしてみました。

※前提条件として、Dockerはインストール済みとします。

 

  1. Dockerファイルの構成
    どこかのフォルダに以下の構成にします。

    python/
      ├ Dockerfile
      ├ docker-compose.yml
      └ opt/
        └ sample.py

     

  2. Dockerfile
    Dockerfileは、なにをインストールして、どんな設定をするかをファイルに指定できます。Dockerを構築したあとでもできますが、使い回せるようにDockerfileをつくるのがおすすめです。今回は、python3をインストールします。
    ※念の為一般ユーザ(user)も追加するようにしました。

    FROM python:3

    ARG USERNAME=user
    ARG GROUPNAME=user
    ARG UID=1000
    ARG GID=1000
    RUN groupadd -g $GID $GROUPNAME && \
    useradd -m -s /bin/bash -u $UID -g $GID $USERNAME
    USER $USERNAME
    WORKDIR /home/$USERNAME/

    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

  3. docker-compose.yml

    docker-compose.ymlは、作成するコンテナ情報を書きます。
    working_dirは作成したコンテナにログインした際の初期ディレクトリになります。
    volumeはローカルのどのフォルダとコンテナの中の環境フォルダを同期するための設定です。コンテナを削除されたときにもデータだけは残したいものに使います。例えば、ソース・ファイルを置く場所に使うことが多いです。

    version: '3'
    services:
      python3:
        restart: always
        build: .
        container_name: 'python3'
        working_dir: '/root/'
        tty: true
        volumes:
          - ./opt:/root/opt

  4. sample.py
    これは、うまくpythonがインストールされたか確認するために作成するので、ファイルの中身は自由にどうぞ。サンプルを置いときます。

    print("test")

  5. dockerのイメージ作成、コンテナのビルド、コンテナ起動
    準備は整いました。それでは、イメージの作成、コンテナのビルドと起動を以下のコマンドで実行しましょう
    cd python
    docker compose up -d --build
    エラーがなければ、イメージができているか確認
    docker image ls
    次にコマンドを実行し、現在走っているコンテナのリストを取得します
    docker container ls
  6. コンテナへ接続して、サンプルで作ったpythonを実行
    問題なくできているのでしたら、最後にコンテナへ接続して、実行してみよう
    接続は、
    $ docker compose exec python3 bash
    で接続して、
    cd opt
    python sample.py
    で実行して、testと表示されればOK

 

おわりに

Dockerは便利なので、いろいろな言語での環境をつくっとくといいかもしれません。