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会被启动。