Simplifyd Cloud

Configs

Mount static config files into a service at deploy time.

Configs let you inject static text files (e.g. Caddyfile, nginx.conf, application.yaml) directly into a service's filesystem without building a custom Docker image. The content is stored on Simplifyd Cloud and mounted as a file at the path you specify every time the service is deployed.

Configs are a subcommand of service:

edge service config <subcommand>

All config commands require a workspace, project, and environment to be set.


config add

Add a new config mount to a service.

edge service config add <svc-slug> --name <name> --mount-path <path> [--content <text> | --file <path>]

Required flags

FlagDescription
--nameA human-readable label for this config (e.g. Caddyfile)
--mount-pathAbsolute path inside the service where the file will appear (e.g. /etc/caddy/Caddyfile)

Content flags (one required)

FlagDescription
--contentInline config content as a string
--filePath to a local file whose content to read

--content and --file are mutually exclusive.

Examples

# Mount a local Caddyfile into a Caddy service
edge service config add my-caddy \
  --name Caddyfile \
  --mount-path /etc/caddy/Caddyfile \
  --file ./Caddyfile

# Inline content
edge service config add my-api \
  --name "app config" \
  --mount-path /app/config.yaml \
  --content "log_level: debug
port: 8080"

Example output

✓ Added config "Caddyfile" (slug: a1b2c3d4-...) → /etc/caddy/Caddyfile

The config is stored but not yet active. Redeploy the service for the file to appear in the service.


config update

Update the name, content, or mount path of an existing config.

edge service config update <svc-slug> <config-slug> --name <name> --mount-path <path> [--content <text> | --file <path>]

All three flags (--name, --mount-path, and one content flag) must be provided — the API replaces the full config record.

Flags

FlagDescription
--nameNew config name (required)
--mount-pathNew mount path (required)
--contentNew inline content
--filePath to a local file to read new content from

Example

# Update content from a file after editing locally
edge service config update my-caddy a1b2c3d4-... \
  --name Caddyfile \
  --mount-path /etc/caddy/Caddyfile \
  --file ./Caddyfile

After updating a config, redeploy the service to apply the new content. The file in a running service is not updated in-place.


config delete

Remove a config mount from a service. Prompts for confirmation unless --force is passed.

edge service config delete <svc-slug> <config-slug>
edge service config delete <svc-slug> <config-slug> --force

Flags

FlagDescription
--forceSkip the confirmation prompt

Example

edge service config delete my-caddy a1b2c3d4-...
Delete config "a1b2c3d4-..." from service "my-caddy"? (y/N): y
✓ Deleted config a1b2c3d4-...

Deleting a config does not remove the mounted file from already-running services. Redeploy the service to clear the mount.


Variable interpolation

Config content can reference service variables using the ${{VAR_NAME}} syntax. Variables are resolved at deploy time — the stored content always keeps the original placeholders, so they are re-evaluated on every deployment with current values.

Available variables

VariableValue
${{SERVICE}}The service name
${{ENVIRONMENT}}The environment name
${{PROJECT}}The project slug
Any service variablee.g. ${{DATABASE_URL}}, ${{PORT}}

Unmatched placeholders are left as-is in the mounted file.

Example

# Caddyfile
${{SERVICE}}.${{ENVIRONMENT}}.internal {
    reverse_proxy localhost:${{PORT}}
}

How it works

  1. Config content is stored in Simplifyd Cloud alongside your service definition.
  2. At deploy time the API interpolates any ${{VAR}} placeholders, then writes the content into a Kubernetes ConfigMap.
  3. The ConfigMap is mounted into the service at the specified --mount-path using a SubPath volume mount — so only that single file is written, without overwriting other files in the same directory.
  4. The ConfigMap is owned by the service and is automatically cleaned up when the service is deleted.

Full example — Caddy reverse proxy

# 1. Create a Docker service using the official Caddy image
edge service create --name caddy --type docker --image caddy:2

# 2. Mount a Caddyfile
edge service config add caddy \
  --name Caddyfile \
  --mount-path /etc/caddy/Caddyfile \
  --file ./Caddyfile

# 3. Deploy
edge deploy up caddy

./Caddyfile:

:80 {
    reverse_proxy ${{BACKEND_HOST}}:${{BACKEND_PORT}}
}