因為要搞開源專案,專案是用docker跑起來的,沒法用idea直接跑。所以需要把docker的image改成用本地映象。
那麼對專案中檔案做出更改,Docker會使用本地原始碼還是從遠端下載的程式碼?
以InLong專案為例,要確定 Docker 配置中的 inlong
服務是否會使用本地原始碼或是從遠端下載的程式碼,需要檢視具體的 docker-compose.yaml
檔案中的 build
和 image
配置。下面是幾種常見的情況和解釋:
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. 混合使用
有時候,配置檔案中可能同時指定了 image
和 build
標籤。這種情況下,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
重新構建映象,以便更改生效。