devopsellence.yml
devopsellence.yml lives in the app root. It describes workload config, not
local node inventory.
schema_version: 1organization: soloproject: myappdefault_environment: productionbuild: context: . dockerfile: Dockerfile platforms: - linux/amd64services: web: ports: - name: http port: 3000 healthcheck: path: /up port: 3000tasks: release: service: web command: - bin/rails - db:migrateingress: 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: trueenvironments: production: services: web: env: RAILS_ENV: productionKey fields
Section titled “Key fields”| Field | Purpose |
|---|---|
schema_version | Config format version. |
organization | Ownership scope. In solo examples this can be solo. |
project | Application/project name. |
default_environment | Environment selected when no override is provided. |
build | Docker build context, Dockerfile, and target platforms. |
services | Named runtime units. Each HTTP service needs ports and a health check. |
tasks.release | Optional one-shot release command. |
ingress | Hostnames, route rules, TLS behavior, and HTTP redirects. |
environments | Per-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: /dataSee Supporting services for Redis, Memcached, and node-label details.