Last month, James wrote a blog post offering tips for how to manage your production database, while also putting forward the case for using a managed database service. I'm going to expand on this topic for this week's 'how-to' series, talking you through how to setup and deploy your database with Cloud 66.
Deploying your database
Cloud 66 gives you the ability to add a database at any time during a stack's life cycle. We currently support the following databases, with no need for additional configuration after deployment:
MySQL (or Percona, if configured via Manifest)
SQLite (only in development environments)
When creating a Docker stack, you can add as many databases as you need in your service configuration during the stack build phase. For Rack-based stacks, Cloud 66 automatically detects whether your application relies on a database or not during your code analysis. This is based on a combination of your Gemfile and your database.yml or mongoid.yml files.
After you've analyzed your code, ensure your desired database type is displayed in the 'About your app' section of the analysis results. If you haven’t specified a username and password for your database, Cloud 66 will automatically generate these credentials for you. These will be available as environment variables and your application will be configured to use them.
Database deployment types
No database (external)
This option allows you to deploy your application without a database managed by Cloud 66, and is ideal if it's hosted externally. Please note that if there is no connectivity to your database, or your database host is not configured correctly, the deployment will fail.
This option deploys your chosen database to the same server as your web server. This option is intended primarily for development, as running your database locally in production is not advised. In this scenario, your application database configuration will be amended to target your local database server. If you scale up your web server, these settings will also be amended automatically to reflect your database configuration.
This option will automatically create a new server for your database and configure your application accordingly.
Customizing your database configuration
You can customize the database configuration of your servers using CustomConfig. CustomConfig is available for MySQL, PostgreSQL, Redis and MongoDB.
Editing and committing your database CustomConfig will perform the following steps on every database server in your stack, one by one, sequentially:
- Check your template for Liquid syntax errors
- Determine the correct server configuration and prepare general variables
- Prepare custom variables for your database type (eg. server_state)
- Compile the database configuration based on the information from the server and database type
- Upload the configuration to the server
Restart your database
A bad database configuration might stop your database from working. Take extra care to make sure the configuration is correct.
Database customization variables
There are a number of variables available for use in your database CustomConfig. Some are general for all database types, while others are database specific.
The following variables are available to any database CustomConfig.
The following variables are only available in the MySQL CustomConfig:
The following variables are only available in the PostgreSQL CustomConfig:
The following variables are only available in the Redis CustomConfig:
Managed and Unmanaged Database Backups
Cloud 66 also has an add-on option to backup your database, on a schedule of your choosing. You can specify whether you want managed or unmanaged backups, how often you'd like to backup your database, whether or not you'd like to Gzip compress your backups, and any tables you want to exclude from your backup.
One thing to note, to successfully create a backup of your database, it must first be created by Cloud 66.