docker工人在运行时缺lesswebpack编译的文件

我遇到了一个问题,我确定这个问题对于一个docker专家来说是非常明显的,但是却在我身上丢失了。

下面是我的dockerfile,其中我添加了几个“ls”,以便可以查看webpack生成的文件。

第一个“ls”正确显示

Step 8 : RUN ls server/public ---> Running in 67bc7ee5f832 bundle.css bundle.js index.html 

但第二个LS不是

 web_1 | index.html 

Dockerfile:

 FROM node:6.2 # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm i COPY . /usr/src/app/ # Build Static Resources RUN npm run build # ls here shows correct files RUN ls server/public # Bundle app source ENV NODE_ENV=production # ls here doesn't show compiled files CMD ls server/public && npm start EXPOSE 3000 

我错过了什么? 为什么在nodejs运行之后,这些bundle.css / js不在浏览器中?

我如何检查目录是否复制正确?

谢谢

RUN定义了一个在docker build镜像期间执行的步骤。

CMD定义了当ENTRYPOINT docker run你的容器时执行的缺省命令(或者定义了传入ENTRYPOINT参数)。

请注意,Docker也caching图层,所以如果你执行另一个构build,如果Docker在同一个前一层的哈希上find这个精确命令的结果图像,则会跳过RUN ls

要查看容器内部,可以运行一个shell来浏览它:

docker run -it --rm your_image_name /bin/bash

既然你传递/bin/bash ,默认的CMD将被绕过,只有一个shell会被启动。