從昨天(01.12.)開始,我遇到了一個奇怪的 compose 問題,我的 docker-compose 無法讀取 Dockerfile。這個問題突然出現,因為代碼沒有改變,但構建開始失敗。
我的碼頭工人撰寫:
service1:
image: service1-image
build:
context: ${SERVICE1_DIR}
dockerfile: \src\Service1.Service\Service1.Service.Web\Dockerfile-Development
ports:
- "${HTTP_SERVICE1_PORT}:80"
- "${HTTPS_SERVICE1_PORT}:443"
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https:// ;http://
- ASPNETCORE_HTTPS_PORT=${HTTPS_SERVICE1_PORT}
- ASPNETCORE_ConnectionStrings__SQLServer=Server=sqlserver;Database=Service1;User ID=sa;Password=****
- ASPNETCORE_Kestrel__Certificates__Default__Password=${CERT_PASSWORD}
- ASPNETCORE_Kestrel__Certificates__Default__Path=${SERVICE1_CERT_PATH}
volumes:
- ${DOCKER_DIR}\https:/https/:ro
Dockerfile-Development 本身沒有問題,因為我可以使用docker build命令直接構建映像。此外,如果我將其更改為 Dockerfile,則錯誤是相同的。
SERVICE1_DIR 是檔案夾根目錄的路徑(解決方案),然后我將路徑擴展到位于我的 Web API 專案所在的 dockerfile 的路徑。我的 API 依賴于幾個類別庫專案。我在 dockerfile 中參考的所有這些都沒有任何問題。
我的環境:
- docker-compose 檔案版本:3.4
- docker 版本:Docker 版本 20.10.11,構建 dea9396
我正在使用 .NET SDK 6.0 和 ASPNET 6.0 運行時。
這是錯誤:
=> ERROR [internal] load build definition from Dockerfile-Development
0.1s
=> => transferring dockerfile: 79B
0.0s
=> [internal] load .dockerignore
0.1s
=> => transferring context: 35B
0.0s
------
[internal] load build definition from Dockerfile-Development:
------
failed to solve with frontend dockerfile.v0: failed to read dockerfile: error from
sender: resolve : CreateFile \\?\C:\src: The system cannot find the file specified.
ERROR: Service 'service1' failed to build : Build failed
**使用解決方案更新**
解決了在構建中添加到dockerfile路徑的缺失部分的問題
作業 docker-compose 檔案:
service1:
image: service1-image
build:
context: ${SERVICE1_DIR}
dockerfile: ${SERVICE1_DIR}\src\Service1.Service\Service1.Service.Web\Dockerfile-Development
ports:
- "${HTTP_SERVICE1_PORT}:80"
- "${HTTPS_SERVICE1_PORT}:443"
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https:// ;http://
- ASPNETCORE_HTTPS_PORT=${HTTPS_SERVICE1_PORT}
- ASPNETCORE_ConnectionStrings__SQLServer=Server=sqlserver;Database=Service1;User ID=sa;Password=****
- ASPNETCORE_Kestrel__Certificates__Default__Password=${CERT_PASSWORD}
- ASPNETCORE_Kestrel__Certificates__Default__Path=${SERVICE1_CERT_PATH}
volumes:
- ${DOCKER_DIR}\https:/https/:ro
uj5u.com熱心網友回復:
在您的 docker-compose.yaml 中,您擁有dockerfile的\src\Service1.Service\Service1.Service.Web\Dockerfile-Development絕對路徑是 Windows 已決議為C:\src.... 除非您的應用程式位于此目錄中,否則您在dockerfiledocker-compose.yaml 中的路徑不正確,應該與 docker-compose.yaml 相關。可能${SERVICE1_DIR}\Service1.Service.Web\Dockerfile-Development或類似。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410675.html
標籤:
