背景
Dockerまわりの勉強をしてると色々な先人の手順が簡単にヒットして「とりあえず動いたやったー」となりがちなので、ちゃんとDockerfileの中身を見てみようと思いました。
今回は
のサイトをもとに勉強を進めていて利用したDockerfileです。
注意点
- 筆者は自分で使うシステム用にDockerを使う程度なので、「載っているコードは企業で使うならこうすべきではない」などあるかもしれません。
- この記事は初学者向けです。
Dockerfileってなに?
DockerはDockerfileに記述された命令を読み込んで自動的にイメージのビルドができる。
docker buildでDockerfileに記述された命令を順番に実行してくれるので、簡単に同じ環境を作れる。 つまり勉強の過程でやり直したい時や、開発の時に複数人で環境を揃えたい時にDockerfileを共有すれば簡単にできる。えらいね。
記述の形式は以下の通り
命令 引数
今回作りたい環境のDockerfileはこちら。
FROM python:3
ENV PYTHONUNBUFFERED=1
RUN mkdir /backend
WORKDIR /backend
ADD requirements.txt /backend/
RUN pip install -r requirements.txt
ADD . /backend/
FROM
これから命令するベース・イメージを指定している。今回はpythonのイメージで、バージョン3を使いますよーということ。(公式のURLはhttps://hub.docker.com/_/python)
ENV
ここでは環境変数PYTHONUNBUFFEREDに1を設定するよということ。
→PYTHONUNBUFFEREDは空文字に設定されない場合には標準出力・標準エラーのストリームのバッファリングを行わない設定になる
参考元のサイトでは
ENV PYTHONUNBUFFERED 1
と書いてあったが公式のリファレンスを見てると、やんわり非推奨と書かれていたので変更してます。
RUN
引数に書かれてるコマンドを実行する。今回はbackendディレクトリを作るコマンドを設定してます。
WORKDIR
以降で実行するコマンドを実行するディレクトリを指定するコマンド。
今回の場合には、「一つ上のRUNコマンドで作成したbackendディレクトリで以降のコマンドを実行してね」と指定してます。
ADD
追加元 追加先で指定して追加元のファイルを追加先に指定したディレクトリに作成できます。
今回の場合にはrequirements.txt(あとで使う)をbackendディレクトリに追加しています。
まとめ
ハンズオンで学ぶ時になんとなく放置して進んでいたDockerfileを再確認できてよかった。
もっと深く理解すれば手作業がもっと減るはず、なのでどんどん活用していきたい。