[英]Dockerfile can not see package.json file
我有這個項目的結構:
- project
-- apps
--- microservice-one
---- Dockerfile
-- package.json
-- docker-compose.yml
這是來自Dockerfile
microservice-one
的 Dockerfile :
FROM node:12.13-alpine As development
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
CMD ["node", "dist/main"]
和 docker-compose.yml
services:
microservice-one:
container_name: microservice-one
build:
context: ./apps/microservice-one
dockerfile: Dockerfile
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- 3000:3000
expose:
- '3000'
command: npm run start
為什么在運行docker-compose build
之后,我的控制台會拋出這個錯誤:
#12 0.725 npm ERR! code ENOENT
#12 0.726 npm ERR! syscall open
#12 0.728 npm ERR! path /usr/src/app/package.json
#12 0.729 npm ERR! errno -2
#12 0.734 npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'
I think that the problem is in my Dockerfile and COPY package*.json./
, is a chance that my Dockerfile
can not see package.json
?
謝謝你的幫助!
從您的文件系統結構中,托管Dockerfile
的目錄是構建上下文 -> microservice-one
。
當您執行docker build...
時,構建上下文及其所有內容都會被打包並發送到 docker 守護程序,然后它會嘗試構建您的容器。 那時只能訪問構建上下文,外部沒有。 ( https://docs.docker.com/engine/reference/commandline/build/#build-with-path )
因此,除非您移動/復制文件,否則它將保持不可見。
當您的上下文是./apps/microservice-one
時,Dockerfile 只能從該目錄及其下的目錄復制文件。
您的 Dockerfile 被編寫為假設上下文是當前目錄,因此如果您更改 docker-compose 文件中的上下文和 dockerfile 值,它應該可以工作。
services:
microservice-one:
container_name: microservice-one
build:
context: .
dockerfile: ./apps/microservice-one/Dockerfile
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- 3000:3000
expose:
- '3000'
command: npm run start
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.