Cloud run config (#512)

diff --git a/Dockerfile.cloud_run b/Dockerfile.cloud_run
new file mode 100644
index 0000000..87d44a0
--- /dev/null
+++ b/Dockerfile.cloud_run
@@ -0,0 +1,52 @@
+# Keep aligned with min SDK in pubspec.yaml and Dart test version in .travis.yml
+FROM google/dart:2.7.2
+
+# The specific commit that dart-services should use. This should be kept
+# in sync with the flutter submodule in the dart-services repo.
+# To retrieve this value, please run the following in your closest shell:
+#
+# $ (cd flutter && git rev-parse HEAD)
+ARG FLUTTER_COMMIT=7f56b53de4e5da2147c4d30d857a72c6f2e4f42f
+
+# We install unzip and remove the apt-index again to keep the
+# docker image diff small.
+RUN apt-get update && \
+  apt-get install -y unzip && \
+  rm -rf /var/lib/apt/lists/*
+
+WORKDIR /app
+RUN groupadd --system dart && \
+  useradd --no-log-init --system --home /home/dart --create-home -g dart dart
+RUN chown dart:dart /app
+
+# Switch to a new, non-root user to use the flutter tool.
+# The Flutter tool won't perform its actions when run as root.
+USER dart
+
+COPY --chown=dart:dart tool/dart_cloud_run.sh /dart_runtime/
+RUN chmod a+x /dart_runtime/dart_cloud_run.sh
+COPY --chown=dart:dart pubspec.* /app/
+RUN pub get
+COPY --chown=dart:dart . /app
+RUN pub get --offline
+
+ENV PATH="/home/dart/.pub-cache/bin:${PATH}"
+
+# Clone the flutter repo and set it to the same commit as the flutter submodule.
+RUN git clone https://github.com/flutter/flutter.git
+RUN cd flutter && git checkout $FLUTTER_COMMIT
+
+# Set the Flutter SDK up for web compilation.
+RUN flutter/bin/flutter doctor
+RUN flutter/bin/flutter config --enable-web
+RUN flutter/bin/flutter precache --web --no-android --no-ios --no-linux \
+  --no-windows --no-macos --no-fuchsia
+
+# Build the dill file
+RUN pub run grinder build-storage-artifacts validate-storage-artifacts
+
+# Clear out any arguments the base images might have set and ensure we start
+# the Dart app using custom script enabling debug modes.
+CMD []
+
+ENTRYPOINT ["/dart_runtime/dart_cloud_run.sh", "--port", "${PORT}", "--server-url", "http://0.0.0.0"]
diff --git a/tool/dart_cloud_run.sh b/tool/dart_cloud_run.sh
new file mode 100755
index 0000000..a2fba99
--- /dev/null
+++ b/tool/dart_cloud_run.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+DBG_OPTION=
+# Only enable Dart debugger if DBG_ENABLE is set.
+if [ -n "$DBG_ENABLE" ]; then
+  echo "Enabling Dart debugger"
+  DBG_OPTION="--debug:${DBG_PORT:-5858}/0.0.0.0"
+  echo "Starting Dart with additional options $DBG_OPTION"
+fi
+if [ -n "$DART_VM_OPTIONS" ]; then
+  echo "Starting Dart with additional options $DART_VM_OPTIONS"
+fi
+ exec /usr/bin/dart \
+     ${DBG_OPTION} \
+     --enable-vm-service:8181/0.0.0.0 \
+     ${DART_VM_OPTIONS} \
+     bin/server_dev.dart