Contents

Docker Compose 強制重啟 Container

有時候 Docker Compose 環境改完設定或程式碼後,單純執行一次 up 不一定會照你預期把容器完整重建。這時如果只是想確認容器狀態乾淨、設定有重新吃進去,最直接的方式通常就是強制重建。

最常用的做法

如果你要的是「不要沿用舊容器,直接重建」,可以用:

1
docker-compose up --force-recreate

這個參數的意思很直接,就是不管 Compose 認為需不需要重建,都把容器重新建立一次。

什麼情況適合用

我自己比較常在下面幾種情境用它:

  1. Compose 設定有改,但變更沒有明顯反映出來。
  2. 想排除是不是舊容器狀態殘留。
  3. 開發環境要快速重整而不想手動一個個砍容器。

這和 restart 有什麼不一樣

很多人會把「重啟容器」和「重建容器」混在一起看,但兩者其實不一樣:

  1. restart 比較像把既有容器停掉再啟動。
  2. --force-recreate 是直接重建容器實體。

如果問題出在舊容器配置或初始化狀態,單純 restart 不一定有用。

另一個相關概念:自動重啟政策

Docker 本身還有 --restart 這種設定,處理的是容器異常結束後要不要自動再拉起來,例如:

1
docker run --restart=always my-image

這類設定比較偏向執行期容錯,不是拿來手動刷新容器內容。

使用時要注意

1. 別把重建當成萬靈丹

如果容器一直掛掉,先查 log 和設定才是根本。重建只是幫你排除舊狀態,不是修問題本身。

2. 留意資料卷與資料持久化

重建容器不代表資料一定消失,關鍵還是要看資料有沒有掛 volume。如果沒有處理好持久化,重建時就可能把你以為會保留的東西洗掉。

小結

Docker Compose 想強制讓容器重新建立,最直接的做法就是 docker-compose up --force-recreate。把它和單純 restart、自動重啟政策這幾件事分清楚,之後在排查容器狀態問題時會比較不容易誤判。