我正在尝试使用Docker将Angular 4应用程序部署到Heroku。但是当访问我的应用程序时,它会一直加载到超时我尝试使用nginx,其他npm服务器和我自己的node.js文件来提供我的文件。但所有方法都是一样的。我的Dockerfile是这样的:
FROM node:8-alpine
COPY package.json package-lock.json ./
RUN npm set progress=false && npm config set depth 0 && npm cache clean --force
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app
WORKDIR /ng-app
COPY . .
RUN $(npm bin)/ng build --prod --aot=false --environment=prod
CMD node server.js
我的server.js:
const express = require('express');
const path = require('path');
const morgan = require('morgan');
const app = express();
const port = process.env.PORT || 4200;
// Angular DIST output folder
app.use(express.static(path.join(__dirname, './dist')));
// Log
app.use(morgan('dev'));
// Send all other requests to the Angular app
app.get('*', function (req, res) {
res.sendFile(path.join(__dirname, './dist/index.html'));
});
// Set Port
app.listen(port, function () {
console.log('Running on localhost: '+port);
});
我通过这个工作通过GitLab CI推送Docker镜像:
production:
type: deploy
stage: production
image: docker:latest
services:
- docker:dind
script:
- docker login registry.heroku.com -u _ -p "$HEROKU_API_KEY"
- docker build -t registry.heroku.com/"$HEROKU_APP_NAME"/web .
- docker push registry.heroku.com/"$HEROKU_APP_NAME"/web
only:
- master
作业成功运行并部署到heroku。正如你在Heroku日志中看到的那样:
2018-03-14T19:05:29.972322+00:00 heroku[web.1]: Starting process with command `/bin/sh -c node\ server.js`
2018-03-14T19:05:32.484316+00:00 app[web.1]: Running on localhost: 48598
2018-03-14T19:05:33.694052+00:00 heroku[web.1]: State changed from starting to up
时
Docker中缺少什么?
答案 0 :(得分:0)
找出问题所在。我部署到一个新的应用程序,Heroku配置为docker镜像。我尝试部署的应用程序已经配置了node.js buildpack。