Skip to content

devopsellence.yml

devopsellence.yml lives in the app root. It describes workload config, not local node inventory.

schema_version: 1
organization: solo
project: myapp
default_environment: production
build:
context: .
dockerfile: Dockerfile
platforms:
- linux/amd64
services:
web:
ports:
- name: http
port: 3000
healthcheck:
path: /up
port: 3000
tasks:
release:
service: web
command:
- bin/rails
- db:migrate
ingress:
hosts:
- app.example.com
rules:
- match:
host: app.example.com
path_prefix: /
target:
service: web
port: http
tls:
mode: auto
email: ops@example.com
redirect_http: true
environments:
production:
services:
web:
env:
RAILS_ENV: production
FieldPurpose
schema_versionConfig format version.
organizationOwnership scope. In solo examples this can be solo.
projectApplication/project name.
default_environmentEnvironment selected when no override is provided.
buildDocker build context, Dockerfile, and target platforms.
servicesNamed runtime units. Each HTTP service needs ports and a health check.
tasks.releaseOptional one-shot release command.
ingressHostnames, route rules, TLS behavior, and HTTP redirects.
environmentsPer-environment overlays.

Services are explicit. Do not rely on fixed concepts such as one web and one worker; name the runtime units your app actually needs.

Services can use the app image or a custom image. Leave image empty when the service should run the image built from this workspace. Set image for supporting services such as Redis, Memcached, backup agents, or separately built workers:

services:
web:
env:
REDIS_URL: redis://redis:6379/0
ports:
- name: http
port: 3000
healthcheck:
path: /up
port: 3000
redis:
image: redis:7-alpine
volumes:
- source: redis_data
target: /data

See Supporting services for Redis, Memcached, and node-label details.