容器中不存在在Dockerfile中创建的数据

容器中不存在在Dockerfile中创建的数据,docker,docker-compose,Docker,Docker Compose,我感谢你的帮助 我有以下Dockerfile: FROM node:slim RUN mkdir -p /project WORKDIR /project # workdir is empty RUN ls -a COPY . /project # workdir is full RUN ls -a # this command create node_modules folder on it own RUN npm install # I have node_modules fold

我感谢你的帮助

我有以下Dockerfile:

FROM node:slim

RUN mkdir -p /project
WORKDIR /project

# workdir is empty
RUN ls -a
COPY . /project

# workdir is full
RUN ls -a

# this command create node_modules folder on it own
RUN npm install

# I have node_modules folder with packages
RUN ls -a
RUN ls -d node_modules/*
最后的产出是:

Step 8/9 : RUN ls -a
 ---> Running in 90d8793f491a
.
..
.babelrc
.editorconfig
.eslintignore
.eslintrc.js
.git
.gitignore
.postcssrc.js
Dockerfile-dev
README.md
build
config
docker-compose.dev.yml
index.html
node_modules
package-lock.json
package.json
src
static
test
Removing intermediate container 90d8793f491a
 ---> b563d272b270
Step 9/9 : RUN ls -d node_modules/*
 ---> Running in a14bb4024e5e
node_modules/@babel
node_modules/@types
node_modules/abab
node_modules/abbrev
node_modules/accepts
node_modules/acorn
但当我从以下命令查看容器的文件时:

docker-compose -f docker-compose.dev.yml run project ls
我没有节点\u模块文件夹(具有依赖项的文件夹),因此我的容器无法启动:

docker-compose -f docker-compose.dev.yml up

sh: 1: webpack-dev-server: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! project@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the project@1.0.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-04-11T19_09_35_669Z-debug.log
docker compose很简单:

version: '3'
services:
  project:
    container_name: project
    build:
      context: .
      dockerfile: Dockerfile-dev
    command: npm run dev
    volumes:
      - .:/project
    ports:
      - 8080:8080
问题是:为什么会这样?如何解决这个问题?

为什么会发生?

如何解决这个问题?

您正在将某些内容装载到
/project
,从而屏蔽了先前在Dockerfile中定义的内容。在Dockerfile中替换行副本/带副本的项目@JinnaBalu,它与我的命令相同,因为dot(project dir)和/project之间没有区别(因为它是同一个project dir,slash允许从根目录访问它)。不管怎样,我按照你说的去做是为了认可我的观点,我是对的。@OliverCharlesworth,我试图从compose中删除卷(没有装入),但没有帮助。或者我做错了什么?Dockerfile上的无关注释:您应该删除
RUN mkdir-p/project
,因为
WORKDIR/project
指令已经执行了。欢迎使用堆栈溢出!欢迎链接到某个解决方案,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及为什么存在,然后引用您链接到的页面的最相关部分,以防目标页面不可用。