読み込まれるタイミング
Dockerfileは、docker build
コマンドを実行したときに読み込まれる。
コード例
FROM python:3
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip && pip install -r requirements.txt
COPY . /code/
FROM
どのDockerイメージ(親イメージ)を利用するかという指定。この場合はpython3のイメージを指定している
ENV
環境変数{key}に{value}を設定する。
PYTHONUNBUFFERED=1
は、PYTHONUNBUFFERED
がキーで1
が値(value)これはコンソールのstdout(標準出力)とstderr(標準エラー出力)のバッファを無効にする設定。
Docker ComposeでDjangoの開発環境を構築した
WORKDIR
以下のRUNなどを実行するワークディレクトリの指定。なければ自動的に作成されるので、mkdirの指示はなくてもいい。
/code
は、codeディレクトリを指示している。
ローカルに何かできるわけではなくて、Docker上の仮想環境(イメージ上)のディレクトリなので、Docker上にすでにあるディレクトリ名とは被らないようにする。
COPY
ローカルにあるものをDockerにコピーする。
requirements.txt /code/
は、requirements.txt
をcodeディレクトリにコピーする指示。
コンテナ内でpip installをまとめてやるために、RUNで利用する前にコピーしてる。
最後にカレントディレクトリをコピーしてるのは、ローカルのファイル群の最新状態をDocker上にコピーしたいから。
RUN
コマンドを実行するためのもの。ターミナルコマンドなら何でも書ける。
pip install --upgrade pip && pip install -r requirements.txt
は、--upgrade pip
でまずpipを最新状態にして、requirements.txtを読み込んでpip installしてる。
requirements.txtを指定したいときは-rオプションをつける。
ENTRYPOINT
CMDと何が違うんだろうと思った方がいると思いますが、ENTRYPOINTでは、docker run時にENTRYPOINTで指定したコマンドの引数が追加できます。では、dockerrun時に-hオプションを追加してみます。-hオプションが追加されて、最終的にfree -t -hが実行されたのがわかります。
【連載】世界一わかりみが深いコンテナ & Docker入門 〜 その3:Dockerfileってなに? 〜 | SIOS Tech. Lab
※entrypointは必ず実行(上書きされない)、cmdは上書き可能。
0 件のコメント:
コメントを投稿