Docker compose overwriting package.json
我正在尝试使用Dockerfile和docker compose运行一个简单的react应用程序。但是,当我运行docker compose up命令时,它失败了,错误是package.json不存在。我猜docker卷挂载以某种方式覆盖了这个文件 谁能告诉我有什么解决办法吗 DockerfileDocker 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
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文件。那么为什么它没有被发现呢??你能推荐一些能使这项工作顺利进行的方法吗?这种行为似乎与人们通常使用容器的方式背道而驰。为什么这是应用程序的一个要求?只是尝试学习绑定挂载。我不是在珠三角的环境中这样做的。