Gitlab CI не будет обслуживать приложение Angular в промежуточной среде

Я пытаюсь настроить конвейер, который выполняет следующие действия:

Фиксирует новый код Angular Создайте приложение для просмотра в реальном времени для тестирования Ручной запуск в производство Мне удалось успешно создать приложение в конвейере с использованием файла докеров и иметь правильную конфигурацию nginx для его маршрутизации в промежуточную среду. После выполнения задания промежуточная среда обновляется, но ничего не работает, а предоставленная ссылка дает сообщение об ошибке «бэкэнд по умолчанию - 404». Я был бы признателен за любые советы о том, как получить эту ссылку для правильного обслуживания живого приложения angular. Заранее спасибо.

Dockerfile:

  # Stage 0, "build-stage", based on Node.js, to build and compile the frontend
  FROM tiangolo/node-frontend:10 as build-stage

  WORKDIR /app

  COPY package*.json /app/

  RUN npm install

  COPY ./ /app/

  ARG configuration=production

  RUN cd /app && npm run build --prod --configuration $configuration


  # Stage 1, based on Nginx, to have only the compiled app, ready for production with Nginx
  FROM nginx:alpine

  RUN rm -rf /usr/share/nginx/html/*

  COPY --from=build-stage /app/dist /usr/share/nginx/html

  COPY /nginx-custom.conf /etc/nginx/conf.d/default.conf

  RUN cat /etc/nginx/conf.d/default.conf

Gitlab-ci.yml Deploy

deploy_stage:
  stage: deploy
  image: docker:stable-git
  services:
    - docker:stable-dind
  script:
    - docker build -t my-angular-project:prod .
    - docker run -d -p 80:80 my-angular-project:prod
  environment:
    name: staging
    url: http://$CI_PROJECT_PATH_SLUG-staging.$AUTO_DEVOPS_DOMAIN
  only:
    refs:
      - master
    kubernetes: active
    variables:
      - $STAGING_ENABLED

Конфигурация NGINX

server {
  listen 80;
  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ /index.html;
  }
}
0
задан 30 November 2018 в 00:16
1 ответ

Проблема с портами. Контейнер Docker не может запускаться на порту 80, потому что этот порт используется nginx. У вас есть два способа решить эту проблему

1) напрямую открыть докер Если это только одно приложение на сервере, остановите привязку nginx и docker к порту 80 и обслуживайте файлы

2) Используйте Nginx как прокси открыть докер для порта, отличного от 80, например

- docker run -d -p 8080:80 my-angular-project:prod

, и использовать nginx в качестве прокси для этого порта

server {
  listen 80;
  location / {
    proxy_pass      http://127.0.0.1:8080;
  }
}
0
ответ дан 5 December 2019 в 05:01

Теги

Похожие вопросы