更新日時:2022-06-12 18:01:25
Dockerを触ることから離れるとDockerfileとdocker-compose.yamlファイルの役割の違いがたまに分からなくなるので、備忘のために自分なりにまとめておこうと思います。
1. Dockerfileの役割 |
2. docker-compose.yamlの役割 |
Dockerfileの役割はDockerイメージを作成することです。
Dockerfileで元となるイメージを指定し、そこに自分で開発したアプリケーションを載せることで自身のイメージを作成することができます。
Dockerfileでbuileして作成されるのはあくまでもイメージとなるので、コンテナではありません。
コンテナを作成する場合は、Dockerfileで作成したイメージを元にdocker container runコマンドを実行する必要があります。
余談ですが、Dockerfileを作成せずとも、元となるDockerイメージをリポジトリからpullしコンテナとして立ち上げた後、docker cpコマンドでアプリケーションファイルをコンテナへコピーすることでアプリケーションを動かすこともできます。
対してdocker-compose.yamlの役割は1つ以上のDockerコンテナを容易に作成できるようにすることです。
docker-compose.yamlではイメージのビルドとコンテナの作成をコマンド1つで実行できます。
ちなみに、docker-compose.yamlではコンテナのイメージを指定することも、Dockerfileを指定しイメージからbuildすることも可能です。
また、ホストマシンとコンテナ、コンテナとコンテナのポートフォワーディングやボリューム指定などが可能なため、DockerfileのみでDockerを使い倒すより多くの設定をIaCとして管理することが可能です。
そのため、お試しでコンテナを立ち上げる程度なら問題ありませんが、少しでも実践的にDockerを使用する場合はdocker-compose.yamlを作成することをお勧めします。