我遇到了一个问题,我确信对于 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
如果已定义的参数)。你的容器。
请注意,Docker 还会缓存层,因此如果您执行另一个构建,RUN ls
如果 Docker 在同一前一层的哈希上找到此确切命令的结果图像,则将跳过。
要查看容器内部,您可以运行 shell 来浏览它:
docker run -it --rm your_image_name /bin/bash
自从你通过/bin/bash
,默认CMD
将被绕过,仅启动一个 shell。
关于node.js - docker webpack编译文件运行时丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38768263/