Cloud Run fixup (#547)
diff --git a/.travis.yml b/.travis.yml
index c089572..2f4aab8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,7 +12,7 @@
os: linux
branches:
- only: [master, dart-29, cloud-run]
+ only: [master, dart-29]
before_script:
- git submodule init
- git submodule update
diff --git a/bin/server_cloud_run.dart b/bin/server_cloud_run.dart
index 912beb5..76eae64 100644
--- a/bin/server_cloud_run.dart
+++ b/bin/server_cloud_run.dart
@@ -14,5 +14,5 @@
await SdkManager.sdk.init();
await SdkManager.flutterSdk.init();
- services_cloud_run.main(args);
+ return services_cloud_run.main(args);
}
diff --git a/cloud_run.Dockerfile b/cloud_run.Dockerfile
index 7a19d48..6f4eac7 100644
--- a/cloud_run.Dockerfile
+++ b/cloud_run.Dockerfile
@@ -51,4 +51,4 @@
ENTRYPOINT ["/dart_runtime/dart_cloud_run.sh", "--port", "${PORT}", \
"--server-url", "http://0.0.0.0", \
- "--services_cloud_run", "redis://10.0.0.4:6379"]
+ "--redis-url", "redis://10.0.0.4:6379"]
diff --git a/lib/services_cloud_run.dart b/lib/services_cloud_run.dart
index 5d4ee42..9ec1e37 100644
--- a/lib/services_cloud_run.dart
+++ b/lib/services_cloud_run.dart
@@ -23,19 +23,23 @@
final Logger _logger = Logger('services');
-void main(List<String> args) {
+Future<void> main(List<String> args) async {
final parser = ArgParser();
- parser.addOption('port', abbr: 'p', defaultsTo: '8080');
+ parser.addOption('port', abbr: 'p');
parser.addOption('server-url', defaultsTo: 'http://localhost');
parser.addOption('redis-url');
-
final result = parser.parse(args);
- final port = int.tryParse(result['port'] as String);
+
+ // Cloud Run supplies the port to bind to in the environment.
+ // Allow command line arg to override environment.
+ final port = int.tryParse(result['port'] as String ?? '') ??
+ int.tryParse(Platform.environment['PORT'] ?? '');
if (port == null) {
- stdout.writeln(
- 'Could not parse port value "${result['port']}" into a number.');
+ stdout.writeln('Could not parse port value from either environment '
+ '"PORT" or from command line argument "--port".');
exit(1);
}
+
final redisServerUri = result['redis-url'] as String;
final sdk = sdkPath;
@@ -45,10 +49,20 @@
if (record.stackTrace != null) print(record.stackTrace);
});
- EndpointsServer.serve(sdk, port, redisServerUri)
- .then((EndpointsServer server) {
- _logger.info('Listening on port ${server.port}');
- });
+ final cloudRunEnvVars = Platform.environment.entries
+ .where((entry) => entry.key.startsWith('K_'))
+ .map((entry) => '${entry.key}: ${entry.value}')
+ .join('\n');
+
+ _logger.info('''Initializing dart-services:
+ port: $port
+ sdkPath: $sdkPath
+ redisServerUri: $redisServerUri
+ Cloud Run Environment variables:
+ $cloudRunEnvVars''');
+
+ final server = await EndpointsServer.serve(sdk, port, redisServerUri);
+ _logger.info('Listening on port ${server.port}');
}
class EndpointsServer {
diff --git a/tool/dart_cloud_run.sh b/tool/dart_cloud_run.sh
index a2fba99..af1a2c3 100755
--- a/tool/dart_cloud_run.sh
+++ b/tool/dart_cloud_run.sh
@@ -13,8 +13,9 @@
if [ -n "$DART_VM_OPTIONS" ]; then
echo "Starting Dart with additional options $DART_VM_OPTIONS"
fi
- exec /usr/bin/dart \
+exec /usr/bin/dart \
${DBG_OPTION} \
--enable-vm-service:8181/0.0.0.0 \
${DART_VM_OPTIONS} \
- bin/server_dev.dart
+ bin/server_cloud_run.dart \
+ $@