Postgres
Definition
A Postgres Resource is defined in convox.yml and linked to one or more Services.
resources:
database:
type: postgres
services:
web:
resources:
- database
Containerized Options
By default, Convox runs Postgres as a container inside your Rack. This is fast to set up and ideal for development and staging environments.
resources:
database:
type: postgres
options:
version: "16"
storage: 20
| Attribute | Type | Default | Description |
|---|---|---|---|
| version | string | 10.5 |
The PostgreSQL Docker image tag |
| storage | int | 10 |
The amount of persistent storage (in GB) |
Specify a recent PostgreSQL version for production use. The default
10.5is the template fallback; most deployments should set an explicit version such as16or17.
AWS RDS Managed Postgres Resources
Convox allows the creation of Postgres resources via AWS RDS. This provides enhanced durability, automated backups, and managed service benefits. Use rds-postgres as the resource type:
resources:
database:
type: rds-postgres
options:
class: db.m5.large
storage: 100
version: "16"
deletionProtection: true
durable: true
encrypted: true
backupRetentionPeriod: 7
preferredBackupWindow: 02:00-03:00
preferredMaintenanceWindow: sun:05:00-sun:06:00
services:
web:
resources:
- database
RDS Features
- Read Replica Support: Configure read replicas for improved read scalability and reliability. Read replicas can be promoted to active primaries if needed.
- Import Existing RDS Database: Import existing AWS RDS databases into a Convox rack for management or access via linking.
RDS Configuration Options
| Attribute | Type | Default | Description |
|---|---|---|---|
| class | string | Required | The compute and memory capacity of the DB instance (e.g., db.t3.micro, db.m5.large) |
| version | string | Required | The version of the database engine (e.g., 16, 15, 14) |
| storage | int | 20 |
The amount of storage (in GB) to allocate for the DB instance |
| encrypted | boolean | false |
Whether to enable storage encryption. Immutable after creation |
| deletionProtection | boolean | false |
Whether to enable deletion protection for the DB instance |
| durable | boolean | false |
Whether to create a Multi-AZ DB instance for high availability |
| backupRetentionPeriod | int | 1 |
The number of days for which automated backups are retained. Set to 0 to disable automated backups |
| preferredBackupWindow | string | AWS managed | The daily time range for automated backups in UTC (format: hh24:mi-hh24:mi, at least 30 minutes) |
| preferredMaintenanceWindow | string | AWS managed | The weekly time range for system maintenance in UTC (format: ddd:hh24:mi-ddd:hh24:mi) |
| iops | int | The amount of provisioned IOPS | |
| port | int | 5432 |
The port on which the database accepts connections. Immutable after creation |
| masterUserPassword | string | Convox generated | The password for the master user. Set as an environment variable to avoid hardcoding |
| allowMajorVersionUpgrade | boolean | true |
Whether major version upgrades are allowed |
| autoMinorVersionUpgrade | boolean | true |
Whether minor version upgrades are applied automatically |
| readSourceDB | string | The source database identifier for creating a read replica | |
| import | string | The database identifier for importing an existing RDS instance. Requires masterUserPassword |
Command Line Interface
Listing Resources
$ convox resources -a myapp
NAME TYPE URL
database rds-postgres postgres://username:password@host.name:port/database
Getting Information about a Resource
$ convox resources info database -a myapp
Name database
Type rds-postgres
URL postgres://username:password@host.name:port/database
Getting the URL for a Resource
$ convox resources url database -a myapp
postgres://username:password@host.name:port/database
Launching a Console
$ convox resources console database -a myapp
psql (16.2 (Debian 16.2-1.pgdg120+2), server 16.2)
Type "help" for help.
database=#
Starting a Proxy to a Resource
$ convox resources proxy database -a myapp
Proxying localhost:5432 to host.name:port
Proxying allows you to connect tools on your local machine to Resources running inside the Rack.
Exporting Data from a Resource
$ convox resources export database -f /tmp/db.sql
Exporting data from database... OK
Importing Data to a Resource
$ convox resources import database -f /tmp/db.sql
Importing data to database... OK