使用Docker

时间:2018-03-14 19:12:46

标签: node.js docker heroku

我正在尝试使用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

但访问Connection Timed Out

Docker中缺少什么?

1 个答案:

答案 0 :(得分:0)

找出问题所在。我部署到一个新的应用程序,Heroku配置为docker镜像。我尝试部署的应用程序已经配置了node.js buildpack。