我正在尝试来自 Google AppEngine 的 Managed VMs Beta,虽然它使用 AppEngine 开发服务器在我的 IDE 中本地运行,但我似乎无法让它运行mvn appengine:gcloud_app_run
.
我始终如一地得到:
"[INFO] INFO: default: "GET /_ah/health?IsLastSuccessful=no HTTP/1.1" 503 298"
因此需要访问 docker 容器中输出的日志来诊断 503。
我已经在配置部分中使用以下行激活了日志记录appengine-maven-plugin
(在 IDE 中效果很好)。
<gcloud_app_enable_mvm_logs>true</gcloud_app_enable_mvm_logs>
然后我尝试使用以下命令从 docker 容器访问日志:
➜ ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
76369bc9b773 heimdall-dev.default.1:latest "/home/vmagent/jetty 5 seconds ago Up 4 seconds 0.0.0.0:49174->8080/tcp google.appengine.heimdall-dev.default.1.0.2014-11-13T210256.776274Z
➜ ~ docker logs 76369bc9b773
Info: Limiting Java heap size to: 1456M
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=64M; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=166M; support was removed in 8.0
2014-11-13 21:02:59.384:INFO::main: Logging initialized @372ms
2014-11-13 21:02:59.487:INFO::main: Redirecting stderr/stdout to /var/log/app_engine/STDERR.2014_11_13.log//var/log/app_engine/STDOUT.2014_11_13.log
所以我希望日志文件“神奇地”映射到/var
我本地机器上的本地文件夹(即在 docker 容器之外)。但似乎不是这样:
➜ ~ tail -f /var/log/app_engine/STDERR.2014_11_13.log
tail: /var/log/app_engine/STDERR.2014_11_13.log: No such file or directory
➜ ~ tail -f /var/log/app_engine/STDOUT.2014_11_13.log
tail: /var/log/app_engine/STDOUT.2014_11_13.log: No such file or directory
这是正确的方法吗?如果是,我错过了什么?否则访问日志的正确方法是什么?
PS:我也尝试使用 ssh-ing 到 docker 容器中,docker attach 76369bc9b773
但这一直给我一个错误。
PS2:我的应用程序是 Java 8 上的“基本”Spring MVC+Security+Social+DataJPA,所以我猜想在 IDE+GAE 开发服务器中不会发生 bean 初始化故障
PS3:我在这里按照教程进行操作:https ://github.com/GoogleCloudPlatform/appengine-java-vm-guestbook-extras并让第 3 阶段正常运行mvn appengine:gcloud_app_run
PS4:为了让我的应用程序在 IDE 中运行,因为我使用的是 Spring MVC,所以我必须实现自己的/_ah/start
端点(灵感来自Google App Engine Localhost Backend Error和No mapping found using Spring3 MVC + Maven2 on GAE)但是我不确定这是否是正确的做法
PS5:我查看了在端口 8000 上运行的管理控制台,那里的日志与 shell 中的日志完全相同(即除了 HTTP 503 消息之外没有太多其他内容)