[Docker]ノンプログラマーのためのDocker入門 Dockerfile編

Docker

どうも、ケニー(tsujikenzo)です。このシリーズでは、Docker入門をお届けしています。

前回は「Dockerコマンド編」で、docker run や docker ps などの基本コマンドを学びました。

今回は、いよいよ「Dockerfile」を使って、自分のPythonアプリを動かせるイメージを作ってみます。

まずは、Dockerが解決する「環境の違い」の問題を、かんたんなハンズオンで体験してみましょう。

Pythonのバージョンが違うとアプリが動かない

次のような app.py を用意しました。「Hello」を表示するシンプルなものです。

import sys

if sys.version_info < (3, 13):
    raise RuntimeError("Python 3.13以上で動作します。")

print("Hello")

メモ帳でデスクトップに置いても構いませんし、こちらからダウンロードしていただいても大丈夫です。ファイルはデスクトップに移動してください。

Pythonアプリの実行

ターミナルを開いて、カレントディレクトリをデスクトップに移動します。

C:\Users\Kenzo>cd desktop

Pythonアプリを実行します。

C:\Users\Kenzo\Desktop>python app.py

問題なければ、ターミナルに「Hello」が表示されます。

もし、Pythonがインストールされていなかったり、Pythonのバージョンが13より低いと、エラーが発生し、アプリが動きません。

こちらは、わたしのサブのパソコンで実行した結果です。

調べてみたところ、このパソコンは、Pythonのバージョンが3.9でした。

このように、「同じアプリなのに、環境が違う」という問題は、よく起こります。

おさらいですが、そこで「アプリ+実行環境」をセットで配るのが、Dockerによる解決策です。

Dockerにおいて、「アプリ+実行環境」をセットで配るための設計図が「Dockerfile(ドッカーファイル)」です。

Dockerfileとは

Dockerfileは「イメージの設計図」です。

どんなOSを使うか、どのファイルを入れるか、どのコマンドを実行するかを記述します。


以下は、Dockerfileの例です。

FROM python:3.13-slim
WORKDIR /app
COPY sample.py .
CMD ["python", "sample.py"]

Python用イメージの選び方

今回は、Python初心者でも扱いやすい python:3.13-slimというイメージを使います。

python:3.13-slimイメージは、Docker Hubでも公開されています。slimというのは「軽量版」という意味で、Python学習の教材などによく使われています。

Image Layer Details - python:3.13-slim

最小のPythonアプリを作る

それでは、以下のsample.pyファイルを作成して、デスクトップに保存しましょう。

import sys

if sys.version_info < (3, 13):
    raise RuntimeError("Python 3.13以上で動作します。")

print("はじめてのDockerfileにチャレンジ中です")

Dockerfileを書く

アプリと同じフォルダ(今回のばあいは「デスクトップ」)に、Dockerfileを作成します。

ファイル名は「”Dockerfile”」です。ダブルクォーテーションでファイル名を指定すると、Dockerfile.txtになってしまうことを防ぎます。

FROM python:3.13-slim
WORKDIR /app
COPY sample.py .
CMD ["python", "sample.py"]

docker build でイメージ作成

イメージとは固定されたコンテナのようなものです。コンテナを実行するには、常にイメージが必要です。

イメージを構築するために、アプリと同じフォルダ内にDockerfileがあれば楽です。

プロジェクトのフォルダ内で、以下のdocker build コマンドを実行するだけです。

実行すると、イメージの作成が始まりますが、完成までに少し時間が掛かります。

docker build -t my-python-app .

イメージが作成されました。

docker run で動作確認

作成したイメージを、実行してみましょう。

docker run my-python-app

他のひと(PC)に配布する

それでは、さきほどアプリが動かなかった私のサブのパソコンに配布したいと思います。

配布方法は、いくつかありますが、今回は以下の手順とします。

  • Dockerfile + sample.pyをZIPファイルに圧縮して渡す(解凍してもらう)
  • docker buildでイメージを作成してもらう
  • docker runでコンテナを実行してもらう

今回は、「アプリ+実行環境」があるので、例外エラーが起きません。確認のために、Pythonのバージョンを確認して、生のアプリを実行すると、ちゃんと例外エラーが起きます。

まとめ

以上で、「ノンプログラマーのためのDocker入門 Dockerfile編」をお送りしました。

Dockerを使うと「アプリ + 実行環境」をまとめて配れるため、環境の違いによる不具合を減らせます。

また、次回をお楽しみに。

参考資料

このシリーズの目次

タイトルとURLをコピーしました