我的容器找不到package.json以在docker-compose上执行npm install

时间:2019-02-28 11:47:16

标签: linux docker npm docker-compose

我正在尝试使用docker-compose部署应用程序,并且该应用程序位于主机的文件夹中(与docker-compose文件位于同一目录)。

我正在运行命令docker-compose up -d,但是似乎未装入该卷,因为执行命令npm install时会显示以下消息:

Step 3/4 : RUN npm install
 ---> Running in a09b1e8139ae
npm WARN saveError ENOENT: no such file or directory, open '/app/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/app/package.json'
npm WARN app No description
npm WARN app No repository field.
npm WARN app No README data
npm WARN app No license field.

之后,我的容器退出了。

我的文件:

docker-compose.yml

version: '3'

services:
  github-app:
    build:
      context: ./docker
    volumes:
      # Place app files.
      - ./:/app
    ports:
      - "3000:3000"

docker / Dockerfile

FROM node:10.15.1

WORKDIR /app
RUN npm install
CMD ["npm", "start"]

有人知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

除非我弄错了。将在挂载任何卷之前执行负责构建过程的docker目录,因此在构建过程中,映像不会有任何名为package.json的内容,因为它位于上下文目录之外。尝试将dockerfile移动到您拥有docker-compose.ymlpackage.json的相同根目录,并使用

更新dockerfile。
COPY . /app

在构建完成之前,将无法使用它取决于挂载的卷