Dockerを勉強中なのですが、実際のサービスでの使われ方でいまいちイメージできない部分があるので教えてください

実際にアプリケーションをデプロイする際に、開発したアプリケーションのソースコードはどの段階で取り込むのでしょうか?

・Dockerfileにgit cloneなどを書いてアプリケーションのコードをイメージに組み込む (コード変更ごとにイメージを作り直す)
・コンテナ起動後にコンテナ内でgit cloneして最新のコードを取り込む
・コードはホスト側のディレクトリに用意してそれをマウントして利用する

どれですかね?