Hirologue

年齢を理由にエンジニアになることを諦めないミドルの成長記録

EP 13: DockerでシンプルなPython環境を構築

はじめに

以前の記事で既存のWebアプリをDocker化するアプローチについて紹介しました。

hirologue.hateblo.jp

さて、次はPythonを学習することになるのですが、ここで環境をどうするか問題が起きてしまいます。私の環境はMac OSですので、ここからはMacにおけるPythonの環境構築のお話になります。

Pythonをインストールするには次の方法が主に挙げられます。

  1. Anacondaを使う
  2. 公式からダウンロード
  3. Homebrewを使う など

私のローカル環境には すでにAnacondaを使って Python 3.10.9 がインストールされています。

今回、スクールのロードマップにしたがい、Pythonの学習を始めるにあたってPython 3.11にバージョンアップしたいなと思っていました。
しかし、それと同時にインストール済みのPythonのバージョンを上げるのも面倒だなとも思いました。

ということで

せっかく学んだDockerを使って、シンプルな構成でPython 3.11の環境を作ってみよう

コンセプト

今回のPythonの環境構築では、次の要件を満たすようにしました。

  • Pythonのバージョンは 3.11とすること
  • Dockerを使うこと
  • オフィシャルイメージから軽量なイメージ(alpineを使用したもの)を選択すること
  • サードパーティーのライブラリ(Pandasなど)は含まないこと
  • エディタはVSCodeを使用し、拡張機能(Dev Containers)を使わないこと
  • コンテナ内のPythonを使うが、データはバインドマウント(ファイルはローカルに保存)

VSCode拡張機能でDev Containersという便利なものがあるようですが、ここではあえて使用しません。

イチからDockerfileとdocker-compose.ymlを作って環境構築します。

Docker ファイルを作成する

ベースとなるPythonのイメージは、Docker Hubからpythonのオフィシャルイメージを検索します。
3.11のタグが付いた軽量なイメージとしてこちらを選択することにしました。

python 3.11.9-alpine

今回はPythonの基礎学習用のディレクトリとして、「python_basic」という名前のディレクトリをローカルに用意することにします。
私は、デスクトップにこのディレクトリを作成しました。

では、エディタでpython_basicディレクトリを開いて、Dockerfileを作ります。

FROM python:3.11.9-alpine

WORKDIR /python_basic

たったこれだけ?と思うかもしれませんが、これだけです。

docker-compose.ymlの作成

次は、docker-compose.ymlファイルを作成します。

今回のケースでは。ホストマシン(ローカル)のエディタ(VSCode)でファイルを編集して、コンテナで実行する仕組みが必須になります。

このことを踏まえた上で、docker-compose.ymlファイルを作ります。

# version: 3  # この行は必要に応じてコメントアウトを外す

services:
  app:
    build: .
    volumes:
      - '.:/python_basic'  # バインドマウントの設定

    tty: true
    stdin_open: true

これでOKです。

コンテナの起動と動作確認

コンテナの起動

作成したコンテナを起動して、動作を確認します。
runコマンドを使って、サービスで設定したappのコンテナ内でシェルを使いたいのでshをつけます。
また、コンテナは自動削除したいので、--rmオプションも付けます。
では、次のコマンドを使ってコンテナを起動します。

$ docker-compose run --rm app sh



動作確認

では、シェルを使ってコマンドを入力してみます。

$ pwd

作業ディレクトリが表示されますね。

次にエディタで新しいファイルとしてhello.py を作成します。
ファイルの中身は何でもいいのですが、print文でPythonのバージョンを表示するようにしてみます。

import platform


print(f'hello python {platform.python_version()} !!')



次にターミナルからcatコマンドで作成したhello.pyが表示されるか見てみます。

$ cat hello.py



では、いよいよpythonファイルを実行してみます。

$ python hello.py

Pythonがきちんと実行されて、バージョンも3.11.9が入っていることが確認できました。

大成功です!

最後にコンテナを抜けます。

$ exit



動作確認


いかがだったでしょうか。
これでPythonの基礎学習を始める準備が整いました。
この記事が、環境構築に悩む方の参考になれば幸いです。
では✋