Docker compose overwriting package.json

Docker compose overwriting package.json,docker,docker-compose,docker-volume,Docker,Docker Compose,Docker Volume,我正在尝试使用Dockerfile和docker compose运行一个简单的react应用程序。但是,当我运行docker compose up命令时,它失败了,错误是package.json不存在。我猜docker卷挂载以某种方式覆盖了这个文件 谁能告诉我有什么解决办法吗 Dockerfile FROM node:alpine WORKDIR /apps COPY package.json . RUN npm install COPY . . CMD ["npm","run","start

我正在尝试使用Dockerfile和docker compose运行一个简单的react应用程序。但是,当我运行docker compose up命令时,它失败了,错误是package.json不存在。我猜docker卷挂载以某种方式覆盖了这个文件

谁能告诉我有什么解决办法吗

Dockerfile

FROM node:alpine
WORKDIR /apps
COPY package.json .
RUN npm install

COPY . .
CMD ["npm","run","start"]
Docker-compose.yml

version: '3'
services:
  react-app:
    build: 
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    volumes:
      - /apps/node_modules
      - ./:/apps
输出

docker-compose up --build
Building react-app
Step 1/6 : FROM node:alpine
 ---> ebbf98230a82
Step 2/6 : WORKDIR /apps
 ---> Using cache
 ---> 52ab3e742158
Step 3/6 : COPY package.json .
 ---> Using cache
 ---> b88a10e48c6f
Step 4/6 : RUN npm install
 ---> Using cache
 ---> 1da097307540
Step 5/6 : COPY . .
 ---> Using cache
 ---> c748991eb661
Step 6/6 : CMD ["npm","run","start"]
 ---> Using cache
 ---> e138b3c17689
Successfully built e138b3c17689
Successfully tagged frontend_react-app:latest
Starting 86e0c20b7955_frontend_react-app_1 ... done
Attaching to 86e0c20b7955_frontend_react-app_1
86e0c20b7955_frontend_react-app_1 | npm ERR! path /apps/package.json
86e0c20b7955_frontend_react-app_1 | npm ERR! code ENOENT
86e0c20b7955_frontend_react-app_1 | npm ERR! errno -2
86e0c20b7955_frontend_react-app_1 | npm ERR! syscall open
86e0c20b7955_frontend_react-app_1 | npm ERR! enoent ENOENT: no such file or directory, open '/apps/package.json'
86e0c20b7955_frontend_react-app_1 | npm ERR! enoent This is related to npm not being able to find a file.
86e0c20b7955_frontend_react-app_1 | npm ERR! enoent
86e0c20b7955_frontend_react-app_1 |
86e0c20b7955_frontend_react-app_1 | npm ERR! A complete log of this run can be found in:
86e0c20b7955_frontend_react-app_1 | npm ERR!     /root/.npm/_logs/2019-02-12T14_36_59_257Z-debug.log
86e0c20b7955_frontend_react-app_1 exited with code 254
文件夹结构

--node_modules
--package.json
--Dockerfile.dev
--Docker-compose.yml
编辑---


尝试使我的应用程序对源代码中的更改做出反应,而无需重建图像。为此,我需要这个绑定挂载才能工作。

确切地说,在启动文件时,您将覆盖您的
/app
目录

您使用的是绑定装载,它与卷相对,总是用主机文件夹的内容覆盖容器文件夹


我怀疑你是否需要这个挂载-你的应用程序正在构建阶段被复制。只需从docker-compose.yml中删除这一行,然后享受。

我不知道为什么,但在我的docker-compose.yml文件中执行下面的操作对我很有效

volumes:
      - '.:/apps/'
      - /apps/node_modules/

基本上,我在单引号中附上了第一个挂载:p

我试图让我的应用程序对源代码中的任何更改做出反应,而无需重建所有内容。为此,我需要工作。此外,主机文件夹本身具有package.json文件。那么为什么它没有被发现呢??你能推荐一些能使这项工作顺利进行的方法吗?这种行为似乎与人们通常使用容器的方式背道而驰。为什么这是应用程序的一个要求?只是尝试学习绑定挂载。我不是在珠三角的环境中这样做的。