docker webpack编译文件在运行时丢失

时间:2016-08-04 13:08:37

标签: node.js docker webpack docker-compose

我遇到了一个问题我确信这对码头专家来说非常明显,但却迷失在我身上。

下面是我的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不存在于浏览器中?

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

由于

1 个答案:

答案 0 :(得分:1)

RUN定义了在图片docker build期间执行的步骤。

CMD定义了ENTRYPOINT容器时执行的默认命令(或传递给docker run的参数(如果已定义))。

请注意,Docker还会缓存图层,因此如果您执行其他构建,如果Docker在同一个上一层的哈希上找到此精确命令的结果图像,则会跳过RUN ls

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

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

自您通过/bin/bash后,将绕过默认的CMD,并且只会启动一个shell。