docker

Docker 勉強メモ②(Dockerfile)

変わらずDockerを勉強中です。
学習用教材で気になって調べたことのアウトプットを想定しています。

前回の記事

WORKDIR命令の存在

Dockerfileには「WORKDIR」という命令が存在しています。
教材には「この命令に続けたディレクトリが、以後の命令では作業ディレクトリとなります。」と記載していますがちょっと理解が及ばないので調べました。
(私の読解力が不足しているだけです)

上記を読んだ直後の私の理解としては、その後にパスを指定していないのでカレントディレクトリを設定しているだろう。程度でした。

カレントディレクトリを設定しているなら、「mkdir」と「cd」コマンドで事足りるのでは?と思いました。


調べたところ、RUN命令やCMD命令で「cd」コマンドを実行しても引き継がず毎回初期位置戻るようでした。

可読性や保守性の観点からでも毎回「cd」コマンドやらを打つのは無駄のため、カレントディレクトリを設定するなら「WORKDIR」命令を使えって意味で納得しました。

参考記事

https://christina04.hatenablog.com/entry/2014/10/31/101510
https://christina04.hatenablog.com/entry/2014/10/31/101510

Dockerfileをスムーズに作るコツ

Dockerは便利ですが、自分で作る場合はどうしても二の足を踏みコピペに辿り着きます。
学習用ならコピペは悪く無いですし、むしろ目的以外は学ばない姿勢は大事だと考えていますが業務で使う可能性が高いものは意味を知っておきたいですね。

Dockerfileを作るコツは私の意見を伝えると、「ローカルで環境を構築してから作成する」と考えています。

散々コピペや、ローカルを汚すことが無いなど書いていますがコツは上記しか無いと考えています。
触れたことが無い言語やツールに対して、いきなりDockerfileにまで手を伸ばすとアタフタして結果的に目的に対するモチベーションが失われる可能性もあります。

ローカルで環境構築を行い、必要な手順を理解してからDockerfileを作れば手順を理解しているのかを確認することも出来ます。

Dockerfileを作る際に意識すべきことは、RUN命令の扱い方です。

1つのRUN命令の中に、複数のコマンドを実施すること可能です。
ただし、キャッシュのことを考えて分割させるか意識した方が良いです。

具体的には、容量の大きいパッケージのインストールはRUN命令を独立させた方が良いです。