docker-composeの「run」と「exec」の違い
auです。
docker-composeで、今の頭の中で思いつく理想的な環境変更の仕方を探している際に、「run」と「exec」でコマンドを実行しているサイトを見つけました。
違いを理解していなかったので調べてみました。
run
runで起動すると、コンテナを新しく作って実行するようです。
コンテナを新しく作って実行するので、接続などがうまくできていないとエラーが起きるようです。
exec
既に起動しているコンテナを使ってコマンドを実行します。
docker-compose up -dなどをしてコンテナを立ち上げる必要があります。
違い
runはイメージ・コンテナの構築と実行を同時に行っているようです。
感覚的には
$ docker-compose up --build $ docker-compose exec app $COMMAND
と言う感じでしょうか。
execは、コンテナが起動している状態(上記の1行目を終わらせた状態)で、上記の2行目だけを行っている感覚だと思いました。