我有自己的目錄結構:
projects
project_1
project_2
node
container_1
-Dockerfile
在我的 Dockerfile 中,我復制project_1到/var/www/project_1目錄,但不幸的是它沒有被復制:
#Dockerfile
FROM node:17
WORKDIR /var/www/project_1
COPY ../../projects/project_1 /var/www/project_1
RUN npm install
CMD ["npm","run","start:dev"]
錯誤:
=> ERROR [3/4] COPY ../../projects/project_1 /var/www/project_1 0.0s
------
> [3/4] COPY ../../projects/project_1 /var/www/project_1:
------
failed to solve: rpc error: code = Unknown desc = failed to compute cache key: "/projects/project_1" not found: not found
uj5u.com熱心網友回復:
在編譯期間使用外部檔案/檔案夾
你不能這樣做,因為 docker 的創建者想要那樣做,作為創建者,他們有很好的理由:簡單性和/或安全性。
Docker 在構建時,只會處理與 Dockerfile 相同檔案夾中的檔案或檔案夾。
有一些解決方法,例如docker build...從一個檔案夾啟動并指定另一個檔案夾中 Dockerfile 的位置。
檢查這些答案以獲取更多詳細資訊:
- https://stackoverflow.com/a/53298876/3957754
- https://stackoverflow.com/a/24540011/3957754
不要使用外部檔案/檔案夾
在構建時,您不應依賴外部檔案夾或檔案。您必須只需要一個包含一個應用程式源代碼的 git 存盤庫。這是常見的、廣泛使用的并且與 devops 兼容。
構建時所需的任何其他依賴項都應該由良好的工程設計:
- 庫:在您的情況下,nodejs/npm 包是公共的或私有的
- docker 基礎鏡像:您可以使用所需的檔案/檔案夾創建另一個鏡像,并
FROM acme-base-nodejs在 docker multi-stage 中或在 docker multi-stage 中使用它作為繼承
uj5u.com熱心網友回復:
您要復制的檔案應位于 Dockerfile 目錄內,而不是位于外部(例如父目錄)。
projects
project_1
project_2
node
container_1
Dockerfile # <-- move your Dockerfile to your project root.
更新您在 Dockerfile 中的檔案位置:
...
COPY ./projects/project_1 /var/www/project_1
...
在專案根目錄下運行時,構建將成功:
docker build -t <my tag> .
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/401884.html
