【问题标题】:Angular Deployment using Azure Devops doesn't load -- shows "hey node developers!" page使用 Azure Devops 的 Angular 部署不加载 - 显示“嘿节点开发人员!”页
【发布时间】:2019-11-23 19:42:29
【问题描述】:

我正在尝试将 Angular 应用程序部署到 Azure,部署似乎有效,工件看起来正确,但是当我访问网站时,我看到了默认的 Azure“嘿节点开发人员”页面。见 (http://testss-123.azurewebsites.net/)

我的构建管道如下:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    npm install -g @angular/cli
    npm install
    ng build --prod
  displayName: 'npm install and build'
  workingDirectory: '$(Build.SourcesDirectory)'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.SourcesDirectory)/dist'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

我的部署管道是默认的“将 Node.js 应用部署到 Azure 应用服务” see here

我已经尝试过使用实际应用程序以及构建的默认应用程序购买“ng new”

【问题讨论】:

  • 您能分享一下您关于这个问题的最新信息吗?您能通过李维斯的解决方案解决这个问题吗?如果您有任何疑问,请随时在此处分享。

标签: node.js angular azure azure-devops devops


【解决方案1】:

我无法解决这个问题,但作为一种解决方法,我将应用程序部署在 docker 容器中,并使用以下 dockerfile

FROM node:latest AS node

WORKDIR /app

COPY . .

RUN npm install && \
    npm run build-prod

FROM nginx:alpine
COPY --from=node /app/dist/superselection/nginx.conf /etc/nginx/conf.d/default.conf

COPY --from=node /app/dist/* /usr/share/nginx/html

我的 src 文件夹中的以下 nginx conf 文件:

server {
  listen 80;
  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ /index.html;
  }
}

最后是以下构建管道:

pool:
  name: Azure Pipelines
steps:
- task: Docker@0
  displayName: 'Build an image'
  inputs:
    azureSubscription: XXXXXXXX
    azureContainerRegistry: XXXXXXXX
    defaultContext: false
    context: '$(System.DefaultWorkingDirectory)'

- task: Docker@0
  displayName: 'Push an image'
  inputs:
    azureSubscription: XXXXXXXX
    azureContainerRegistry: XXXXXXXX
    action: 'Push an image'

【讨论】:

  • 感谢您在此处分享您的解决方案,您可以接受它作为答案,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档此线程,谢谢。
【解决方案2】:

默认情况下,您的 Azure WebApp 在 IIS 实例上运行。如果你想处理 Html5 模式(没有 hashbang),那么你必须创建一个 Web.Config 文件并定义一个重写。

<configuration>
   <system.webServer>
      <defaultDocument enabled="true">
         <files>
            <add value="index.html" />
         </files>
      </defaultDocument>
   </system.webServer>
</configuration>

【讨论】:

【解决方案3】:

如果您登录http://testss-123.scm.azurewebsites.net/。您可能会发现您的代码已部署到文件夹site/wwwroot/dist/yourapp,安装site/wwwroot。这可能会导致此问题。

您可以如下修改您的 archiveFiles 任务。将 rootFolderOrFile 指向 dist 文件夹下的 app-name 文件夹。并将 includeRootFolder 设置为 false。

以便输出 zip 文件仅包含您可以部署的代码。

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.SourcesDirectory)/dist/<yourapp>'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true

【讨论】:

  • 我试图这样做,但仍然没有任何运气。最后,我设法通过在 docker 容器中部署应用程序来解决这个问题。
  • @Joe Bucklkey。太好了,您解决了这个问题,您在部署到 docker 容器时是否对 yaml 进行了任何更改?如果您能分享您执行此操作的步骤,我们将不胜感激。
  • 见下方答案
猜你喜欢
  • 2020-07-21
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多