我已经尝试将应用程序部署到aws一段时间了。我的网络应用程序在本地工作得非常好,但当它通过docker容器托管在aws上时,我遇到了以下错误:
Failed to load resource: the server responded with a status of 404 (bundle.js)
or...
GET http://my_AWS_ROUTE_53/bundle.js net::ERR_ABORTED
文件夹结构:
config
--> webpack.config.js
dist
--> bundle.js
src
--> public (where all of my client code is, also what is producing bundle.js)
--> index.js
--> server
--> static
--> index.html
Dockerfile
app.js
以下是我在app.js中提供文件的方式:
app.use('/', express.static(__dirname + '/src/server/static/'));
app.use('/', express.static(__dirname + '/dist/'));
app.get('/', function (request, response){
response.sendFile(__dirname + '/src/server/static/index.html');
})
webpack.config.js输出:
entry: path.resolve(__dirname, "../src/public/index.js"),
output: {
path: path.resolve(__dirname, '../dist/'),
publicPath: "/",
filename: "bundle.js"
},
的index.html:
<html>
<head>
<meta charset="utf-8">
<base href="/" />
<title>Test</title>
</head>
<body>
<div id="myTestApp"> </div>
</body>
<script src="bundle.js"></script>
</html>
我不知道是否值得注意,但是index.html上的GET在本地返回304。
我现在已经在大脑上碾压我的大脑了一天左右。有些东西告诉我,我做了一些愚蠢的事情,但却难以理解为什么它在本地工作,而不是在AWS上的docker中。
感谢。
编辑:这是我的dockerfile
FROM node:7.9.0
ENV appDir /var/www/app/current
RUN mkdir -p /var/www/app/current
WORKDIR ${appDir}
ADD package.json ./
RUN npm i
ADD . /var/www/app/current
EXPOSE 3001
CMD ["npm", "start"]