Я пытаюсь развернуть приложение Angular 4 на Heroku с помощью Docker. Но при доступе к моему приложению оно продолжает загружаться до тайм-аута. Я пробовал использовать 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.info('Running on localhost: '+port);
});
Я отправляю образ Docker через GitLab CI с этим заданием:
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:
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
Что-то не хватает в Докере?





Выясните проблему. Я развернул новое приложение, и Heroku настроил его для образа докера. Приложение, которое я пытался развернуть, уже было настроено с помощью пакета сборки node.js.