Dockerfile覚え書き

create 2021/08/16

Docker 勉強メモ

t f B! P L

読み込まれるタイミング

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は上書き可能。

このブログを検索

自己紹介

自分の写真
Pythonが趣味です。 勉強のアウトプットを公開したくて、新たにブログ開設しました。 勉強メモのつもりだけど、日常の雑記も書きたい予定。

独学中の身で、個人的な勉強メモも投稿しているので、間違った内容が含まれることもあるかもしれません。
お気づきの際は、問い合わせフォームや、コメント欄からご指摘いただけましたら、大変助かります。

旧ブログ(更新停止中。いずれ統合するかも)ゆーるるのゆるゆる日記

参加中ランキング

PVアクセスランキング にほんブログ村

ブログ アーカイブ

QooQ