【问题标题】:Dockerfile can not see package.json fileDockerfile 看不到 package.json 文件
【发布时间】:2021-12-14 19:12:22
【问题描述】:

我有这个项目的结构:

- project
-- apps
--- microservice-one
---- Dockerfile
-- package.json
-- docker-compose.yml

这是我来自microservice-oneDockerfile

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'

我认为问题出在我的 Dockerfile 和 COPY package*.json ./ 上,是不是我的 Dockerfile 看不到 package.json

感谢您的帮助!

【问题讨论】:

  • package.json 不在 /apps/microservice-one 中,而是高一级,因此 docker 找不到它。此外,您的第二卷看起来无效。但是在构建时,这不会影响您。但是您将在下一步中解决该问题。

标签: node.js docker npm docker-compose


【解决方案1】:

在您的文件系统结构中,托管 Dockerfile 的目录是构建上下文 -> microservice-one

当您执行docker build ... 时,构建上下文及其所有内容都会被打包并发送到 docker 守护程序,然后它会尝试构建您的容器。那时只能访问构建上下文,外部没有。 (https://docs.docker.com/engine/reference/commandline/build/#build-with-path)

因此,除非您将文件移动/复制到上面,否则它将保持不可见。

【讨论】:

    【解决方案2】:

    当您的上下文为./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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多