convox.yml file is a manifest used to describe your application and all of its infrastructure needs. This file is similar to a Docker Compose file but allows for detailed configuration options for your environments.
For a simple Rails application with a Postgres Database the convox.yml file might look like:
resources: postgres: type: postgres services: web: build: . command: bundle exec rails server -b 0.0.0.0 -p 3000 port: 3000 resources: - postgres
You can access defined resources from services with environment variables.
In the above example, the
postgres resource provides a
POSTGRES_URL variable that is accessible from the
The environment variable name is the resource name converted to all-caps, with a
This would contain the entire connection string you would need, ie:
For a complete set of options available in
convox.yml can click on the various sections in the template below.
environment: - DEFAULT=value resources: database: type: postgres options: storage: 200 queue: type: redis services: web: build: . command: bin/web environment: - FOO - BAR=baz health: /health internal: true port: 3000 resources: - database test: make test deployment: minimum: 50 maximum: 200 termination: grace: 45 scale: count: 1-10 cooldown: down: 180 up: 30 targets: cpu: 70 memory: 90 requests: 200 worker: build: ./worker command: bin/worker environment: - FOO links: - web resources: - database - queue metrics: agent: true image: awesome/metrics grpc: build: . port: grpc:50051 timers: cleanup: schedule: "0 3 * * ? *" command: bin/cleanup service: web