Gitlab CI不会将Angular应用程序用于暂存环境

时间:2018-11-29 21:35:38

标签: angular docker nginx gitlab gitlab-ci

我正在尝试建立一个执行以下操作的管道:

提交新的Angular代码 构建实时审查应用以进行测试 手动推入生产 我已经能够使用docker文件在管道内成功构建应用程序,并具有正确的nginx配置,可将其路由到登台环境。作业通过后,将更新暂存环境,但是没有任何运行,并且提供的链接会显示“默认后端-404”错误消息。我将对如何获得此链接以正确服务实时角度应用提供任何指导。预先感谢。

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_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;
  }
}

1 个答案:

答案 0 :(得分:0)

无法访问暂存环境,因为您没有在此作业中部署应用程序。如我所见,您正在使用kubernetes集群。构建docker映像后,您应该将其推送到例如项目的gitlab注册表中,然后将其传递给kubernetes的部署定义(或头盔图)并进行应用。然后,您将其部署到集群中。啊,也要使端点易于访问,记住要配置集群的入口,也可以将请求重定向到基于子域的正确部署。