質問: Dockerを学び始めた初心者です。 Dockerfileでいろいろインストールするときに、DockerfileにRUNコマンドを書いて、インストールしたり、設定したりとするのがよいのか、予め実行させる処理をシェルスクリプトにまとめ、ファイルとしてCOPYコマンドでtmpなどに入れて実行させるのか、どちらが良いのでしょうか。 私としては、Dockerのコンテナはできる限り何もない状態にしておき、runするときにシェルを動かして、imageを使い回せるような形にするのが正解かと思っていたのですが、けっこうDockerfile内のRUNで設定している人も多いようで、どちらが最適なのかわかりません。 結局は、imageを使い回すような処理は書くことはなさそうだとも感じています。 良い点、悪い点など教えていただけますと幸いです。 よろしくおねがいします。
回答: Dockerfileはdocker-composeとセットで使う事がほとんどだと思うけど、Dockerfile内では.envやdocker-compose.ymlで設定した引数を利用出来るので`RUN`の一部として利用出来ます 動的に変数を作り、それを`RUN`に使う事も出来ます 対して予め用意したシェルスクリプトだとそれが出来ません ※シェルの中で環境変数・変数を作って使う事は出来ます ※`RUN`でsedして書き換える事も出来ます > > どちらが最適なのかわかりません。 > > > 自分のやり易いようにどうぞ 個人利用の範囲ならやり易い方法や好みの方法から始めて不都合があれば適宜手法を変えてけばいいです ただし他の人にイメージを配布するならシェルスクリプトをエントリーポイントとしてイメージに突っ込むしかないでしょう