node.js - docker webpack编译文件运行时丢失

标签 node.js docker webpack docker-compose

我遇到了一个问题,我确信对于 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/

相关文章:

c# - NPM脚本 'start'退出但未指示create-react-app服务器正在监听请求

node.js - 复制大文件(超过 2GB)时出现 Node 未知系统错误

docker - Docker 容器中的 Telethon TelegramClient 身份验证

javascript - webpack.config.js 中的 json-loader 不起作用

javascript - 如何从后端获取数据,并在浏览器端使用它?

angular - 尝试对 Angular 进行 dockerize 时出现 Dockerfile 错误 - 没有这样的文件或目录

git - Docker 从 git repo 运行命令?

Angular2 RC5 WebPack ngRx 模块热替换

javascript - .Net Core 2 SPA/Angular 模板 - 渲染全局 CSS

node.js - async.eachSeries 每次迭代仅运行一次,其中包含 async.waterfall