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

时间:2018-08-20 22:18:01

标签: angular docker google-cloud-platform google-container-builder

我正在尝试在GCP上使用“ Google Container Builder”使用以下Dockerfile构建Angular应用程序,但失败并显示错误代码

.wait

我将按以下方式启动

### 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;"]

首先获取npm软件包,然后在实际执行构建的步骤(即

)上失败
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} ."
          }
        }
      }
    }

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

1 个答案:

答案 0 :(得分:0)

我已经修复了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将根本原因隔离到容器中。