DotCloud¶
注釈
This cookbook recipe is obsolete because DotCloud has been acquired by Docker. Please submit a pull request to update this recipe.
DotCloud offers support for all WSGI frameworks. Below is a quickstart guide for Pyramid apps. You can also read the DotCloud Python documentation for a complete overview.
Step 0: Install DotCloud¶
Install DotCloud's CLI by running:
$ pip install dotcloud
Step 1: Add files needed for DotCloud¶
DotCloud expects Python applications to have a few files in the root of the
project. First, you need a pip requirements.txt
file to instruct DotCloud
which Python library dependencies to install for your app. Secondly you need a
dotcloud.yaml
file which informs DotCloud that your application has (at a minimum)
a Python service. You may also want additional services such as a MongoDB
database or PostgreSQL database and so on - these things are all specified in
YAML.
Finally, you will need a file named wsgi.py
which is what the DotCloud
uWSGI server is configured to look for. This wsgi.py script needs to create a
WSGI callable for your Pyramid app which must be present in a global named
"application".
You'll need to add a requirements.txt, dotcloud.yml, and wsgi.py file to the root directory of your app. Here are some samples for a basic Pyramid app:
requirements.txt
:
cherrypy
Pyramid==1.3
# Add any other dependencies that should be installed as well
dotcloud.yml
:
www:
type: python
db:
type: postgresql
Learn more about the DotCloud buildfile.
wsgi.py
:
1# Your WSGI callable should be named “application”, be located in a
2# "wsgi.py" file, itself located at the top directory of the service.
3#
4# For example, to load the app from your "production.ini" file in the same
5# directory:
6import os.path
7from pyramid.scripts.pserve import cherrypy_server_runner
8from pyramid.paster import get_app
9
10application = get_app(os.path.join(os.path.dirname(__file__), 'production.ini'))
11
12if __name__ == "__main__":
13 cherrypy_server_runner(application, host="0.0.0.0")
Step 2: Configure your database¶
If you specified a database service in your dotcloud.yml, the connection info will be made available to your service in a JSON file at /home/dotcloud/environment.json. For example, the following code would read the environment.json file and add the PostgreSQL URL to the settings of your pyramid app:
1import json
2
3# if dotcloud, read PostgreSQL URL from environment.json
4db_uri = settings['postgresql.url']
5DOTCLOUD_ENV_FILE = "/home/dotcloud/environment.json"
6if os.path.exists(DOTCLOUD_ENV_FILE):
7 with open(DOTCLOUD_ENV_FILE) as f:
8 env = json.load(f)
9 db_uri = env["DOTCLOUD_DATA_POSTGRESQL_URL"]
Step 3: Deploy your app¶
Now you can deploy your app. Remember to commit your changes if you're using Mercurial or Git, then run these commands in the top directory of your app:
$ dotcloud create your_app_name
$ dotcloud push your_app_name
At the end of the push, you'll see the URL(s) for your new app. Have fun!