Docker 踩坑紀錄 - 運行階段 Bind Mount 覆蓋 WORKDIR 的內容

我踩到了什麼坑 本文的背景延續自我之前的文章《一個專案需要多個 Dockerfile - 淺談建構上下文 (build context)》 因為我們目前經手的專案會需要針對不同環境或是測試 Build 不同的 Image,為了讓目錄架構更具組織性且容易理解,我們根據不同的環境把各個環境的 Dockerfile, docker-compose.yaml, .sh 等等放在各個環境的目錄下,現在的目錄架構大概像這樣 ↓: E2Eproject/ ├── testenvironment1/ │ └── Dockerfile ├── testenvironment2/ │ ├── docker-compose.yaml │ └── Dockerfile ├── start-headless-tests.sh └── requirements.txt 由於我正在本地 Debug 這個專案,需要在本地運行 Docker-compose,我便很自然的執行 docker-compose -f ./cicd/headless/docker-compose.yaml up,結果 Docker 容器運行起來時,遇了一個錯誤:/bin/bash: /usr/src/app/cicd/headless/start-headless-tests.sh: No such file or directory。 這個錯誤讓我想也想不透哪邊出錯,我一開始都是針對 Dockerfile 去做動作,但完全沒有用 這邊就附上當時錯誤發生時的 Dockerfile 和 docker-compose.yaml,大家可以試著猜猜看是哪個環節導致錯誤! E2Eproject/cicd/headless/Dockerfile ↓ # Dockerfile # Use the official Python base image from the DockerHub....

January 28, 2024 · 3 min