Pythonを勉強しよう! と思ったので、DockerでPythonの環境を作っちゃおうと思ったわけです。
というわけで、下の記事を参考に、DockerのPython環境を作っていきます。
参考元にしたがって、ディレクトリを作って…
参考元のDockerfileを写経します。
ChatGPTに解説してもらったので、行ごとにコメントをつけておきます。
# Python 3の公式Dockerイメージをベースとしています。
FROM python:3
# このDockerイメージでコンテナを実行するユーザーをrootユーザーに設定します。
USER root
# apt-getを更新します。
RUN apt-get update
# ロケールを設定します。まず、localesパッケージをインストールし、その後、UTF-8エンコーディングで日本語ロケールを生成します。
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
# LANG環境変数をja_JP.UTF-8に設定します。
ENV LANG ja_JP.UTF-8
# LANGUAGE環境変数をja_JP:jaに設定します。
ENV LANGUAGE ja_JP:ja
# LC_ALL環境変数をja_JP.UTF-8に設定します。
ENV LC_ALL jaJP.UTF-8
# タイムゾーンをJSTに設定します。
ENV TZ JST-9
# ターミナルの種類をxtermに設定します。
ENV TERM xterm
# Vimとlessパッケージをインストールします。
RUN apt-get install -y vim less
# pipをアップグレードします。
RUN pip install --upgrade pip
# setuptoolsをアップグレードします。
RUN pip install --upgrade setuptools
# JupyterLabをpipを使用してインストールします。python -m pipを使用してpipを実行することで、Pythonモジュールとしてpipを呼び出します。
RUN python -m pip install jupyterlab
- FROM
- ベースとなるDockerイメージを指定します。
- USER
- コンテナ内の実行ユーザーを指定するために使用されます。
USER命令は、その後のRUN、CMD、ENTRYPOINTなどの命令で実行される際に指定したユーザーで実行されます。ただし、ホスト側のファイルシステムにアクセスするなどの特権が必要な場合は、rootユーザーで実行する必要があります。 - ENV
- ENVは、Dockerfileの中で環境変数を設定するために使用される命令です。環境変数は、コンテナ内のアプリケーションに必要な設定を渡すために使用されます。
- RUN
- 指定したコマンドを実行するために使用されます。
- pip
- pipは、Pythonのパッケージ管理ツールの1つであり、Pythonの拡張機能やライブラリをインストール、アップグレード、アンインストールするために使用されます。
pipは、Python 2.7.9以降およびPython 3.4以降で標準でサポートされています。Pythonパッケージのインストールやアップグレードなど、多くのタスクを簡単かつ効率的に行うことができます。 - ロケール(locale/locales)
- ロケール(locale)は、コンピューターシステムが使用する言語、文字コード、日付・時刻の書式などの情報を指定する設定です。例えば、日本語環境でのロケールには、文字コードとしてUTF-8やShift_JIS、日付書式として”年/月/日”や”月/日/年”などがあります。
ロケールは、プログラムがテキストを表示する際の書式や、日付や時刻の表示方法などに影響します。ロケールが適切に設定されていない場合、テキストの表示が乱れる、日付や時刻が正しく表示されないなどの問題が生じることがあります。
写経したdocker-compose.ymlにも、勉強のためにコメントをつけます。
# Docker Composeファイルのバージョンを指定します。このファイルは、バージョン3で書かれています。
version: '3'
# servicesセクションで、Python 3環境を実行するDockerコンテナを定義します。このコンテナには、python3という名前が付けられます。
services:
python3:
# このコンテナが停止した場合に、自動的に再起動するように指定します。
restart: always
# カレントディレクトリのDockerfileを使用して、イメージをビルドするように指定します。
build: .
# コンテナにpython3という名前を付けます。
container_name: "python3"
# コンテナ内で作業するディレクトリを指定します。この場合、/root/ディレクトリを作業ディレクトリとして使用します。
working_dir: '/root/'
# コンテナ内でttyを有効にし、対話的なプロセスを実行するように指定します。
tty: true
# ローカルの./optディレクトリを、コンテナ内の/root/optディレクトリにマウントします。これにより、ホストマシンとコンテナ間でデータを共有することができます。
volumes:
- ./opt:/root/opt
- tty
- ttyは、UNIX系オペレーティングシステムで使用される用語で、端末(テキスト入力/出力装置)を表します。
Dockerでは、ttyは、コンテナ内で対話的なプロセスを実行するために使用されます。tty: trueと指定することで、コンテナ内のシェルで対話的にコマンドを入力することができます。
ターミナルからupします。
docker compose up -d