我现在可以使用
运行Dart应用gcloud --verbosity debug preview app run app.yaml
并在AppEngine上部署和运行
gcloud --verbosity debug preview app deploy app.yaml
但是我没有找到将调试器连接到开发服务器上运行的Dart应用程序的方法。
我找到了http://dartbug.com/21067,但仍无法找到使其正常工作的方法。
另见https://groups.google.com/a/dartlang.org/forum/#!topic/cloud/OK1nJtg7AjQ
答案 0 :(得分:1)
应用程序可以在没有Docker的情况下运行,然后像任何Dart命令行应用程序一样进行调试: 资源。 https://groups.google.com/a/dartlang.org/d/msg/cloud/zrxgOHFz_lA/q5CdLLQPBAgJ
API服务器是App Engine SDK的一部分,我们正在使用它 在appengine包中运行测试。如果你看看 https://github.com/dart-lang/appengine/blob/master/tool/run_tests.sh 你会看到它期望环境变量 APPENGINE_API_SERVER。
API服务器位于/platform/google_appengine/api_server.py
并采取了许多论点。我刚试过像这样运行它:
$ $ CLOUD_SDK / platform / google_appengine / api_server.py \ -A dev~test-application \ --api_port 4444 \ --high_replication \
--datastore_path / tmp / datastore在正常开发服务器之外运行应用程序引擎应用程序 要求设置许多环境变量。这很有效 对于我的申请:
$ GAE_LONG_APP_ID = test-application \ GAE_MODULE_NAME =默认\\ GAE_MODULE_VERSION =版本\ GAE_PARTITION = dev \ API_PORT = 4444 \
API_HOST = 127.0.0.1 \ dart bin / server.dart在Dart编辑器中,您无法为每个设置环境变量 启动配置,因此必须在启动前全局设置 飞镖编辑。在WebStorm中,可以运行配置 特定的环境变量。
这种简单的设置会导致不支持正常的一切 开发服务器支持。一些问题是:
- 当时只有一个应用程序,因为它始终在端口上侦听 8080(可以很容易地进行配置)*用户API(嘲笑这个 应该不那么困难)*模块API *没有健康检查 (应该不是问题)*所有HTTP标头都是直接的 客户端(没有x-appengine-headers)*管理员web界面不是 可用*可能还有其他东西
这都是实验性的,但它是一个更简单的解决方案 开发人员设置,原因与部署不匹配 环境与开发服务器一样紧密。
使用Docker运行API服务器也可以作为图像 带有Cloud SDK的google / cloud-sdk位于hub.docker.com。
使用以下Dockerfile
FROM google / cloud-sdk EXPOSE 4444 ENTRYPOINT [“/google-cloud-sdk/platform/google_appengine/api_server.py”,\\ “-A”,“dev~test-application”,“ - api_port”,“4444”,\ “--high_replication”,“ - datastore_path”,“/ tmp / datastore”]
构建并运行
$ docker build -t api_server。 $ docker run -d -p 4444:4444 api_server
将上面的API_HOST更改为192.166.59.103(无论你的Docker在哪里) 容器是)并运行。
此致,SørenGjesse
从DartEditors调试器调试开始使用流畅的Dart构建1.8.0.edge_042017
。
我假设下一个dev版本(可能是1.9.0-dev1.0
)也会包含相关的修复程序?
有关其工作原理的详细步骤,请访问:https://groups.google.com/a/dartlang.org/d/msg/cloud/OK1nJtg7AjQ/u-GzUDI-0VIJ
使用最新的Dart dev build 1.8.0-dev.4.6
构建自定义Docker镜像
Dart团队实际上正在准备一个简单的方法来自己做这件事(见https://github.com/dart-lang/dart_docker)
在主机系统上安装最新的bleeding_edge(使用此脚本https://gist.github.com/zoechi/d240f56a32ed5649797f或从http://gsdview.appspot.com/dart-archive/channels/be/raw/latest/editor/darteditor-linux-x64.zip手动下载)
将其添加到app.yaml
文件
env_variables:
DBG_ENABLE: 'true'
# disable health-checking because this is so annoying during debugging
vm_health_check:
enable_health_check: False
有关自定义运行状况检查的详细信息,请参阅How to disable health checking for `gcloud preview app run`。
使用glcoud --verbosity debug app run app.yaml
或glcoud --verbosity debug app run app.yaml index.yaml
等到Docker容器准备就绪(如果docker ps
列显示以Command
开头的值
/dart_runtime/dart_
联系
打开DartEditor
打开菜单Run > Remote Connection...
连接到:Command-line VM
主持人:localhost
如果你没有t use
boot2docker or the IP address returned by the command
boot2docker ip`
端口:5005
Select Folder...
选择包含项目源代码的目录。
点击OK
设置断点并照常继续。
第一步是使用Observatory,其中包括基于浏览器的调试器UI。
要完成此工作,请将以下行添加到app.yaml
文件
network:
forwarded_ports: ["8181"]
这可能有助于让server.dart
等到我们有机会使用天文台设置断点。
env_variables:
DART_VM_OPTIONS: '--pause-isolates-on-start'
boot2docker
为我们提供了Docker ip(192.168.59.103),从gcloud preview app run app.yaml
开始后,我们可以连接到http://192.168.59.103:8181
,这将打开Observatory GUI。