簡體   English   中英

使用Maven在Google App Engine上部署SpringBoot / Angular 4

[英]Deploy a SpringBoot / Angular 4 on Google App Engine with maven

我嘗試在GoogleCloud上部署應用程序(目前有免費帳戶)。 FrontEnd(Angular)和BackEnd(Java / JPA / SpringBoot)是使用maven在單個.jar中構建的。

在本地,在我的Jenkins和Google Shell服務器上:

mvn spring-boot:運行=> 工作正常

但是當我嘗試部署

MVN AppEngine:部署=> 502錯誤

部署被標記為成功。 但是,當我檢查日志(gcloud應用程序默認記錄為tail -s)時,SpringBoot部署似乎凍結,重新啟動,再次凍結,……這讓我發瘋……有時它正在起作用……在SpringBoot重新啟動前幾分鍾。

因此,我需要一些建議以查找問題所在。

這是我的pom.xml

https://maven.apache.org/xsd/maven-4.0.0.xsd“ xmlns:xsi =” http://www.w3.org/2001/XMLSchema-instance“ xmlns =” http:// maven。 apache.org/POM/4.0.0" >

<modelVersion>4.0.0</modelVersion>

<artifactId>back-office</artifactId>
<name>back-office</name>
<description>Back Office</description>

<parent>
    <groupId>fr.test</groupId>
    <artifactId>mon-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring4</artifactId>
    </dependency>
    <dependency>
        <groupId>nz.net.ultraq.thymeleaf</groupId>
        <artifactId>thymeleaf-layout-dialect</artifactId>
    </dependency>
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.1.0</version>
    </dependency>
    <!-- BOOT -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- PERSISTENCE -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- SECURITY -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>com.nimbusds</groupId>
        <artifactId>nimbus-jose-jwt</artifactId>
        <version>4.39.2</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>fr.test</groupId>
        <artifactId>front-office</artifactId>
        <version>${project.version}</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

<repositories>
  ....
</repositories>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>1.3.1</version>
      </plugin>
    </plugins>
</build>

這是我的app.yaml配置(在src / main / appengine中)

# [START runtime]
runtime: java
env: flex

handlers:
- url: /.*
  script: this field is required, but ignored

runtime_config:  # Optional
  jdk: openjdk8
 # server: jetty9

manual_scaling:
  instances: 1
# [END runtime]

根據您描述的症狀,我懷疑您的應用程序容器用完了內存,並被OOM殺手殺死。

默認的Flex VM僅具有1GB的內存,僅600MB留給應用程序容器。

解決內存問題的一種可靠方法是在Google Cloud Logging UI的vm.syslog中找到類似的vm.syslog

kernel: [  133.706951] Out of memory: Kill process 4490 (java) score 878 or sacrifice child 
kernel: [  133.714468] Killed process 4306 (java) total-vm:5332376kB, anon-rss:2712108kB, file-rss:0k

嘗試通過將其添加到您的app.yaml來增加內存:

resources:
  memory_gb: 4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM