Dockerとは??という方は、
環境構築が驚くほど簡単になる【 Docker 】の概要説明の記事を参照ください。
Dockerfileをさくっと作りたいが、
Dockerfileに記載する命令って何があって、
どうやって使うんだっけ?
と、Dockerfileを作ろうと思う度に悩まれている方も多いのではないでしょうか。
そこで、Pythonの開発環境構築をベースとした、
Dockerfileのサンプルと、命令の使い方を纏めました。
一人でも多くの人が、さくっとDockerfileを作れるようになればと思っています。
Dockerfile サンプル
Pythonの開発環境を構築する為のDockerfileのサンプルです。
用意するファイルは、以下2ファイル。
・requirements.txt
インストールしたいpythonのパッケージを記載する。
例えば、
uWSGI==2.0.18
・Dockerfile
以下コードを格納します。
# ベースイメージ FROM python:3 # メタ情報の追加 LABEL version="1.0" LABEL description="Python開発環境" # 環境変数の設定 ENV VAR Hello-World RUN echo ${VAR} # 作業ディレクトリの指定 WORKDIR /usr/src/app # アプリのインストール COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 起動時の処理実行 CMD ["echo","Hello-World"]
命令の説明
命令は大文字・小文字を区別しません。
ただ、大文字が推奨されています。(引数との区別をする為)
命令 | 説明 |
FROM | イメージを作成する為のベースとなるイメージ Dockerfileは必ず FROM命令で始めないといけません。 |
LABEL | メタ情報の記載 |
ENV | 環境変数の設定 |
WORKDIR | ワークディレクトリの設定 以降の RUN、CMD、ENTRYPOINT、COPY、ADDコマンドの ワークディレクトリになります。 |
COPY | COPY {src} {dest} ホスト内の {src} から、コンテナ内の {dest}へ、 ファイルやディレクトリをコピー |
ADD | COPY命令と基本同じですが、 ホストのtarファイルをイメージに展開してくれます。 一般的に、COPY命令が推奨されています。 |
RUN | コマンドを実行 |
VOLUME | 指定した名前を使って、マウントポイントを生成します。 但し、命令でのホストのマウント先は指定出来ません。 ホストのマウント先は、dockerコマンド・composeファイル から指定出来ます。 |
EXPOSE | コンテナの実行時に、所定ネットワーク上のどのポートをリッスンするかを指定する。 |
CMD | コンテナ起動時に実行する処理を設定する。 CMD命令は、以下形式で記載する。 CMD [“executable”,”param1″,”param2″] 注意点:CMD 命令は1 つしか記述出来ません。 |
# | 行頭に # を付けると、それ以降の文言は無視されます。 コメントとして扱われます。 |
Dockerコンテナの作成(コマンド実行)
docker build -t python-image .
ビルドを行い、イメージを作成します。
-t オプションで、イメージ名を付けます。
最後の「.」 ですが、Dockerfileが格納されているパスを指定します。
上記例では、Dockerfileが格納されているディレクトリでコマンドを実行しており、
Dockerfileのファイル名が「Dockerfile」の時は、ファイル名が省略可能となる為、
「.」となっています。
docker run --rm -it --name python-app python-image /bin/bash
作成したイメージから、コンテナを起動します。
-it オプションは、コンテナ内にログインします。
–rm オプションは、コンテナログアウト時にコンテナを自動的に削除します。
python --version
Pythonのバーションを確認しましょう。
Python 3.9.2
が返ってきました。
あとは、この中で Pythonのパッケージをインストールしたり、
Pythonコードを書いていけます。
exit
最後に、上記コマンドでコンテナからログアウトします。
参考
Dockerfile リファレンス
http://docs.docker.jp/engine/reference/builder.html
Dockerコマンド
http://www.tohoho-web.com/docker/command.html