Docker化节点应用程序不提供静态内容

我最近将我的nodejs应用程序移动到了docker容器中。 一切工作正常,除了静态文件(如鲍尔组件)不会被加载(404)。

怎么了?

在我的节点应用程序:

app.use('/static', express.static(__dirname + '/../public')); 

我的.bowerrc

 { "directory": "public/lib" } 

Bower下载并安装正确目录中的所有文件。 我在docker集装箱内自己检查了一下。

我的dockerfile:

 FROM node:4-onbuild COPY . /src RUN cd /src/ && npm install && bower install --allow-root RUN ["node", "/src/server.js"] EXPOSE 3000 

我之前遇到的类似问题,这是bower而不是docker容器的问题,bower不能很好的使用root权限,你需要使用node install命令来安装所有的依赖。 将Node和Angular依赖关系合并到一个package.json中,并使用节点的package.json来触发bower它可以解决你的问题。