對專案中檔案做出更改,Docker會使用本地原始碼還是從遠端下載的程式碼?

peterzh6發表於2024-07-04

因為要搞開源專案,專案是用docker跑起來的,沒法用idea直接跑。所以需要把docker的image改成用本地映象。
那麼對專案中檔案做出更改,Docker會使用本地原始碼還是從遠端下載的程式碼?

以InLong專案為例,要確定 Docker 配置中的 inlong 服務是否會使用本地原始碼或是從遠端下載的程式碼,需要檢視具體的 docker-compose.yaml 檔案中的 buildimage 配置。下面是幾種常見的情況和解釋:

1. 使用遠端映象

如果 docker-compose.yaml 檔案中指定了 image 標籤,並且沒有 build 標籤,那麼 Docker 會從 Docker Hub 或其他指定的遠端倉庫下載映象。例如:

inlong:
  image: apachepulsar/inlong:latest

在這種情況下,對本地原始碼的修改不會反映在透過 docker-compose up 啟動的容器中,因為容器使用的是預先構建的映象。

2. 使用本地原始碼構建

如果 docker-compose.yaml 檔案中包含了 build 標籤,指向了一個本地目錄(通常包含一個 Dockerfile),Docker 將根據這個 Dockerfile 構建映象。例如:

inlong:
  build:
    context: ./path/to/local/inlong
    dockerfile: Dockerfile

在這種配置下,如果你修改了本地的原始碼,然後重新執行 docker-compose up --build,這些更改將會被包括在新構建的映象中,因為 Docker 會根據當前的原生代碼重新構建映象。

3. 混合使用

有時候,配置檔案中可能同時指定了 imagebuild 標籤。這種情況下,Docker 會根據 build 路徑構建映象,並且可以用 image 標籤為構建的映象指定一個名字。如:

inlong:
  image: mycustom/inlong:dev
  build:
    context: ./inlong

在這種情況下,如果你修改了本地的原始碼並執行 docker-compose up --build,修改將會體現在新的映象中,因為 Docker 使用原生代碼構建了新映象。

總結

要確認 Docker 是否使用本地原始碼,關鍵是檢視 docker-compose.yaml 檔案中是否有 build 配置指向本地目錄。如果有,且你對程式碼進行了更改,確保使用 docker-compose up --build 重新構建映象,以便更改生效。

相關文章