Jon*_*man 1 java google-app-engine spring maven-gae-plugin spring-boot
我一直在努力解决这个问题大约一个星期,我在SO上看到的任何东西都对我有用.我有一个基于Spring Boot构建的REST API,我正试图将其部署到Google App Engine.在本地运行很好,当我在GAE模拟器上运行它也可以正常工作; 然而,一旦我使用mvn appengine:deploy我得到一个成功的构建,但在尝试端点时我只得到502.我不知道日志在哪里所以这真的踢我的屁股.
我的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.admin</groupId>
<artifactId>admin-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- Exclude this for deployment only -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- other project dependencies -->
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>5.3.0</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
<!-- end other project specific dependencies -->
<!-- Dependencies provided during deployment -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- End dependencies for deployment -->
<!-- Dependencies for local -->
<!-- <dependency> -->
<!-- <groupId>org.springframework.boot</groupId> -->
<!-- <artifactId>spring-boot-starter-tomcat</artifactId> -->
<!-- <scope>provided</scope> -->
<!-- </dependency> -->
<!-- End dependencies for local -->
</dependencies>
<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>
<configuration>
<project>project-id-from-GAE-here</project
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
我的应用程序类是一个简单的带注释的@SpringBootApplication类.我有2个带有注释@RestController和简单@RequestMapping方法的控制器.其中一个REST控制器用于/_ah/health返回200 的端点,因为一个帖子提到由于缺少健康检查端点而导致的常量重启.
我有一个简单的application.yml用于我的值注入并创建了一个app.yaml文件src/main/appengine
runtime: java
env: flexible
threadsafe: true
manual_scaling:
instances: 1
handlers:
- url: /.*
script: this field is required, but ignored
runtime_config:
jdk: openjdk8
Run Code Online (Sandbox Code Playgroud)
我完全失去了这个.这是我的第一次GAE部署,希望能有更多的部署.(我也没有使用Docker,因为我在装载Docker的Windows 10机器上断了.)
更新 我注意到我忘记将我的项目ID放在maven插件下.一旦我这样做,我得到的错误是找不到app.yaml.我意识到,由于我使用的是灵活的环境,因此我不需要appengine-web.xml,而且我的文件名为app.yml,而不是app.yaml.我用这个更新了我的问题,在成功部署后我仍然得到502.
我意识到我的GAE试用期包括技术支持,所以我联系了他们.问我的pom和app.yaml.他们的回应是将以下内容添加到我的app.yaml"由于Java因消耗大量内存而闻名,因此消耗的开销过程超过了大约0.4GB的值"
resources:
cpu: 2
memory_gb: 2.3
disk_size_gb: 10
volumes:
- name: ramdisk1
volume_type: tmpfs
size_gb: 0.5
Run Code Online (Sandbox Code Playgroud)
他们还提供了此链接供参考:https://cloud.google.com/appengine/docs/flexible/java/configuring-your-app-with-app-yaml#resource-settings
一旦我这样做,我的应用程序就开始正常工作了.
编辑
如果你有一个简单的应用程序,设置,cpu:1因为你在CPU小时计费,你的每日配额是28和2 CPU,你最终有48个CPU小时.因为他们的教程设置了一个RDB(80美元)而没有被使用并且没有显示可以杀死该项目,所以我在1个月内免费获得了300美元的免费信用.另外,请确保在部署新内容时删除旧版本,否则每个版本都会收取费用.
| 归档时间: |
|
| 查看次数: |
939 次 |
| 最近记录: |