Skip to content

Compose-Format Configuration

EasyRunner uses the Docker Compose file format as the user-facing app configuration format. It reads the file and turns it into Podman/systemd configuration on the web host.

Compose is a format here

EasyRunner does not require you to run the Docker Compose CLI. It reads Compose-format YAML because it is a familiar way to describe containerized app stacks.

Flow A Location

For Flow A, commit this file in your app repo:

.easyrunner/docker-compose-app.yaml

Minimal Shape

name: my-app
services:
  web:
    image: localhost/my-app:latest
    environment:
      - PORT=3000
    restart: unless-stopped
    networks:
      - easyrunner_proxy_network
    labels:
      xyz.easyrunner.appNodeType: web
      xyz.easyrunner.appFramework: standardbackend
      xyz.easyrunner.appContainerInternalPort: "3000"

networks:
  easyrunner_proxy_network:
    name: easyrunner_proxy_network
    external: true

Important Fields

Field Why it matters
name: Used in generated systemd unit names. Use a unique app-specific value.
services: Defines the containers/processes inside the EasyRunner app.
networks.easyrunner_proxy_network Connects public services to Caddy's proxy network.
xyz.easyrunner.appNodeType Marks a service as web or internal.
xyz.easyrunner.appContainerInternalPort Tells Caddy which internal port the service listens on.

Do not bind public host ports

EasyRunner expects Caddy to be the public entry point. Avoid exposing app containers directly with host port bindings unless a guide explicitly tells you to.

Multi-Service Apps

name: shop
services:
  web:
    image: localhost/shop-web:latest
    networks: [easyrunner_proxy_network]
    labels:
      xyz.easyrunner.appNodeType: web
      xyz.easyrunner.appContainerInternalPort: "3000"
  worker:
    image: localhost/shop-worker:latest
    labels:
      xyz.easyrunner.appNodeType: internal
  redis:
    image: docker.io/library/redis:7-alpine
    labels:
      xyz.easyrunner.appNodeType: internal

networks:
  easyrunner_proxy_network:
    name: easyrunner_proxy_network
    external: true

See Compose-Format Files and Labels for the reference.