diff --git a/managed_vms/kinto/Dockerfile b/managed_vms/kinto/Dockerfile new file mode 100644 index 00000000000..ddb731ad2a3 --- /dev/null +++ b/managed_vms/kinto/Dockerfile @@ -0,0 +1,42 @@ +# Copyright 2015 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License + +# The Google App Engine python runtime is Debian Jessie with Python installed +# and various os-level packages to allow installation of popular Python +# libraries. The source is on github at: +# https://github.com/GoogleCloudPlatform/python-docker +FROM gcr.io/google_appengine/python + +# Create a virtualenv for the application dependencies. +# If you want to use Python 3, add the -p python3.4 flag. +RUN virtualenv /env + +# Set virtualenv environment variables. This is equivalent to running +# source /env/bin/activate. This ensures the application is executed within +# the context of the virtualenv and will have access to its dependencies. +ENV VIRTUAL_ENV /env +ENV PATH /env/bin:$PATH + +# Kinto config file +ENV KINTO_INI /etc/kinto/kinto.ini + +# Install dependencies. +ADD requirements.txt /app/requirements.txt +RUN pip install -r /app/requirements.txt +#Create Kinto config file and replace 8888 with 8080 +RUN kinto --ini $KINTO_INI --backend=memory init && sed -i 's/8888/8080/g' $KINTO_INI + +# Run the Kinto kickoff command +CMD kinto --ini $KINTO_INI migrate && kinto --ini $KINTO_INI start + diff --git a/managed_vms/kinto/README.md b/managed_vms/kinto/README.md new file mode 100644 index 00000000000..5483adbe349 --- /dev/null +++ b/managed_vms/kinto/README.md @@ -0,0 +1,18 @@ +# Kinto Example + +This is a basic example of running Mozillas [Kinto](https://github.com/Kinto/kinto/blob/master/docs/index.rst) +on Managed VMs. Kinto provides a framework to sync JSON data across many devices and provide push notifications. +Thius example uses a custom runtime to install Kinto and edit the config to run it on port 8080, which is the port that +the base Docker image is expecting. + +Since Kinto is being imported as a Python library and run as-is, no additional code is necessary. + +Note that this is using Kinto's basic in-memory backend. As such, the instances are tied to 1. A production +version of Kinto would use a PostgreSQL database and Redis cluster, which would allow scaling to many instances. + +If you are interested in seeing this example expanded to use PostgreSQL, you can file an Issue on the Issue +Tracker, or submit a Pull Request if you've accomplished it yourself. + + + + diff --git a/managed_vms/kinto/app.yaml b/managed_vms/kinto/app.yaml new file mode 100644 index 00000000000..6819c1facc9 --- /dev/null +++ b/managed_vms/kinto/app.yaml @@ -0,0 +1,32 @@ +# Copyright 2015 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file specifies your Python application's runtime configuration. +# See https://cloud.google.com/appengine/docs/managed-vms/config for details. + +runtime: custom +vm: true + +# Kinto does not respond 404 to /_ah/health (sends a redirect) +vm_health_check: + enable_health_check: False + +# Using an in-memory backend so lock instances to 1 +manual_scaling: + instances: 1 + + +# Temporary setting to keep gcloud from uploading the virtualenv +skip_files: + - ^v?env$ diff --git a/managed_vms/kinto/requirements.txt b/managed_vms/kinto/requirements.txt new file mode 100644 index 00000000000..611c5c13e33 --- /dev/null +++ b/managed_vms/kinto/requirements.txt @@ -0,0 +1,3 @@ +gunicorn==19.4.5 +oauth2client==1.5.2 +kinto==1.11.2