当前位置: 首页 > 知识库问答 >
问题:

在Google Container Builder上使用Docker构建Angular应用程序

范安歌
2023-03-14
### STAGE 1: Build ###

# We label our stage as ‘builder’
FROM node:8.1.4-alpine as builder

COPY package.json  ./

## Storing node modules on a separate layer will prevent unnecessary npm installs at each build.
# RUN npm cache clean
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app

WORKDIR /ng-app

COPY . .

## Checking node version and that it can be accessed irectly
RUN node --version

## ng Version check
RUN $(npm bin)/ng --version

## Build the angular app in production mode and store the artifacts in dist folder
RUN node --max-old-space-size=8192 $(npm bin)/ng build --prod --aot --build-optimizer --no-progress
##RUN $(npm bin)/ng build --prod ## Fails also


### STAGE 2: Setup ###

FROM nginx:1.13.3-alpine

## Copy our default nginx config
COPY nginx/default.conf /etc/nginx/conf.d/

## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*

## From ‘builder’ stage copy over the artifacts in dist folder to default nginx public folder
COPY --from=builder /ng-app/dist /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]
stage('Build and push image with Container Builder') {
     // ----------------------------------------------------------
     // Apparently there is an issue with multi-stage builds on Jenkins 
     // Build using container builds and push to container registry (120 mins of free daily for builds included)  
      steps {
        container('gcloud') {
          dir('./AlbumFoo.Web') {
            sh "PYTHONUNBUFFERED=1 gcloud builds submit --tag ${imageTagAlbumWebsite} ."
          }
        }
      }
    }
RUN node --max-old-space-size=8192 $(npm bin)/ng build --prod --aot --build-optimizer --no-progress

失败,“gcr.io/cloud-builders/docker”失败:退出状态139

共有1个答案

韩禄
2023-03-14

在package.json中存在冲突的包引用,包括@Angular/cli:1.7.0和“@Angular-devkit/build-Angular”:“~0.6.0”,我已经修复了这些引用。

我还更新了docker文件

### STAGE 1: Build ###

# We label our stage as ‘builder’
FROM node:10.0.0 as builder

#Cleanup
RUN npm cache clean --force
#RUN rmdir node_modules /s /q
RUN npm install -g typescript@2.7.2


COPY package.json  ./

## Storing node modules on a separate layer will prevent unnecessary npm installs at each build.
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app

WORKDIR /ng-app

COPY . .

## Checking node version and that it can be accessed irectly
RUN node --version

## ng Version check
RUN $(npm bin)/ng --version

##RUN npm rebuild node-sass --force

## Build the angular app in production mode and store t he artifacts in dist folder
##RUN node --max-old-space-size=8192 $(npm bin)/ng build --prod --aot --build-optimizer --no-progress
##RUN REM call npm install -g @angular/cli
RUN $(npm bin)/ng build --prod 


### STAGE 2: Setup ###

# base image
FROM nginx:1.13.9-alpine

# copy artifact build from the 'build environment'
COPY --from=builder /ng-app/dist /usr/share/nginx/html

# expose port 80
EXPOSE 80

# run nginx
CMD ["nginx", "-g", "daemon off;"]

我最终创建了一个基本的docker映像,并一次一个地运行Dockerfile中定义的步骤,以便通过ssh将根本原因隔离到容器中。

 类似资料:
  • 目标:用 Docker 镜像的方式搭建 Angular 前端应用 本项目代码维护在 angular-docker-sample Angular 应用搭建 首先,借助 generator-gulp-angular 生成一个 Angular 应用。 具体的操作大致是 npm install -g yo gulp bower npm install -g generator-gulp-angular

  • 问题内容: 我正在尝试使用我的go应用程序创建一个docker映像。该应用程序(在MacOS上开发)取决于哪个,而又取决于我在Docker映像中安装的对象,如下所示: 我收到以下错误: 我/app/folder/vendor/github.com/confluentinc/confluent-kafka-go/kafka ../folder/vendor/github.com/confluenti

  • 我正在尝试在docker文件上构建我的go应用程序。在我的内心深处。mod有一个需要身份验证/ssh的私有包。这个问题类似于在Docker中使用私有模块构建Go应用程序,但在我的情况下,我必须从而不是中提取包。这是我的dockerfile: 我试图按照这个教程https://divan.dev/posts/go_get_private/,通过更改到仍然失败。 以下是错误详细信息: 这里有人知道如何

  • 我想知道这种情况下的最佳实践是什么: 我正在模拟一个电梯系统,该系统目前正在将所有输出转储到控制台。这不容易追踪,而且很难想象每层楼的问题状态以及当前算法的效率。设置如下: 一对人-生产者/消费者创建随机的人,并将他们放置在每个楼层的特定目的地。每一层都有供人们上下活动的问讯处。电梯与每层楼和一个调度器交互,以决定下一步去哪里以及接谁。 将此设置表示为gui时,将每个线程/对象的当前状态转换为gu

  • 嗨,我正在尝试将OpenGL桌面应用程序移植到android。我对android开发一无所知,所以我依赖Qt Creator来打包应用程序。作为设置的一部分,我在android ndk中使用以下设置调用了“生成独立工具链”脚本 然后我使用android-cmake并将其传递给我新创建的独立工具链的路径,该路径在我的assimp目录树中创建了libassimp.so、libassimp.so.3和l