Services
Create and manage Docker and PostgreSQL services on the Simplifyd Cloud canvas.
A service is a containerised workload running inside an environment. Simplifyd Cloud supports two types of services:
| Type | Description |
|---|---|
| Docker | Any Docker image — your own app, a public image, or a third-party tool. |
| Postgres | A managed PostgreSQL cluster, automatically provisioned and backed up. |
Creating a Docker service
- Right-click the canvas and choose Add Docker Service, or use the command palette (
Cmd + K). - In the service creation panel, enter the Docker image name (e.g.
nginx:latestorghcr.io/my-org/my-app:main). - Configure resources and click Add.
- An Apply Changes bar appears at the bottom — click Apply to deploy.
Docker service settings
Open the service panel → Settings tab to configure:
| Setting | Description |
|---|---|
| Image | Docker image path and tag |
| vCPUs | Number of virtual CPU cores |
| Memory | Memory limit in MB |
| Replicas | Number of running instances |
| Region | Deployment region |
| Start command | Override the container entrypoint |
| Health Probes | Startup, readiness, and liveness healthchecks |
Private registry credentials
By default, Docker services pull images from public registries without authentication. If your image is hosted in a private registry, you need to provide credentials so the platform can pull it at deploy time.
Supported registries
Any registry that supports standard Docker authentication is supported:
| Registry | Domain |
|---|---|
| Docker Hub | docker.io (default) |
| GitHub Container Registry | ghcr.io |
| GitLab Container Registry | registry.gitlab.com |
| Quay.io | quay.io |
| AWS ECR | <account>.dkr.ecr.<region>.amazonaws.com |
| Google Artifact Registry | <region>-docker.pkg.dev |
| Any OCI-compliant registry | — |
Configuring credentials
- Open the service panel → Settings tab.
- Under Source, find the Registry Credentials section.
- Click Add credentials.
- Enter your username and password (or token), then click Set credentials.
The credentials are saved and used automatically on the next deployment.
To update credentials, click Edit and re-enter them. To remove them entirely, open the form and click Clear credentials.
Credential format by registry
| Registry | Username | Password |
|---|---|---|
| Docker Hub | Docker ID | Personal access token |
| GitHub Container Registry | GitHub username | Personal access token with read:packages scope |
| GitLab | GitLab username | Personal access token with read_registry scope |
| Quay.io | Robot account name (namespace+robotname) | Robot account token |
| AWS ECR | AWS | Short-lived token from aws ecr get-login-password (expires after 12 hours) |
| Google Artifact Registry | _json_key | Full contents of a service account JSON key file |
Images hosted on the Simplifyd Cloud internal registry (sdcr.io) never require credentials — authentication is handled automatically.
Image format
When using a private registry, include the full registry domain in your image path:
ghcr.io/your-org/your-image:tag
registry.gitlab.com/your-group/your-project/image:tag
your-dockerhub-username/private-repo:latestFor Docker Hub private images the domain can be omitted:
your-username/private-image:latestSecurity
Credentials are encrypted at rest using AES-256-GCM. Only the username is returned in API responses — the password is never exposed after it is saved. Credentials are decrypted only at deployment time when the image is pulled.
AWS ECR tokens expire after 12 hours. You must update the credential before redeploying if the token has expired.
Creating a Postgres service
- Right-click the canvas and choose Add Postgres.
- The service is pre-configured with sensible defaults. Adjust the name if needed.
- Click Apply in the Apply Changes bar to provision the cluster.
The DATABASE_URL connection string is automatically available as a Simplifyd-provided variable and can be referenced in other services.
Service panel
Clicking any service node opens the service panel on the right side of the canvas. The panel has four tabs:
| Tab | Description |
|---|---|
| Deployments | View active deployment, history, logs, and redeploy controls |
| Variables | Add, edit, and remove environment variables |
| Metrics | CPU, memory, and network usage charts |
| Settings | Service configuration (image, resources, ingress, etc.) |
Renaming a service
Right-click a service node and choose Rename, or click the pencil icon in the service panel header. Service names are used in reference variables — for example ${{my-service.PORT}}.
Service names have a maximum length of 32 characters.
Ingress / public endpoints
To expose a service on the internet, configure ingress in the service Settings tab:
- Click Add Ingress.
- Choose the protocol (
HTTPorgRPC) and the internal port your service listens on. - Optionally provide a custom domain (FQDN).
- Click Apply to activate the endpoint.
The public URL will appear in the Settings tab once the deployment is live.
Healthchecks
Healthchecks let Kubernetes know when your container is alive, ready to serve traffic, or still starting up. Simplifyd Cloud supports all three Kubernetes probe types: startup, readiness, and liveness.
Configure them in the service panel → Settings tab → Deploy section → Health Probes.
See the Healthchecks page for full configuration details, recommended patterns, and code examples.
Config file mounts
Configs let you inject static text files (e.g. Caddyfile, nginx.conf, application.yaml) directly into a service without building a custom Docker image. The file content is stored on Simplifyd Cloud and mounted at a path you choose every time the service is deployed.
Adding a config
- Open the service panel → Settings tab.
- Scroll to the Configs section and click Add Config.
- Fill in the dialog:
- Name — a human-readable label (e.g.
Caddyfile). - Mount Path — absolute path inside the service where the file should appear (e.g.
/etc/caddy/Caddyfile). - Content — paste or type the file content in the editor. The editor highlights syntax automatically based on the file extension.
- Name — a human-readable label (e.g.
- Click Save Config.
The config is stored but not yet active. Redeploy the service for the file to appear in the service.
Editing a config
Click the pencil icon next to an existing config to open it in the same dialog. Edit any field and click Save Config. Redeploy the service to apply the new content.
Deleting a config
Click the trash icon next to a config and confirm. Redeploy the service to remove the mount from the service.
Variable interpolation
Config content can reference service variables using the ${{VAR_NAME}} syntax. Variables are resolved at deploy time, so the stored content always keeps the original placeholders and they are re-evaluated on every deployment.
# Caddyfile
${{SERVICE}}.${{ENVIRONMENT}}.internal {
reverse_proxy localhost:${{PORT}}
}Available built-in variables: ${{SERVICE}}, ${{ENVIRONMENT}}, ${{PROJECT}}. Any variable you have set on the service (e.g. ${{DATABASE_URL}}, ${{PORT}}) is also available. Unmatched placeholders are left as-is.
Deleting a service
Open the service panel → Settings tab → scroll to the bottom and click Delete Service. Confirm the deletion. The change is staged — click Apply to permanently remove the service and all its deployments.
Deleting a service is irreversible. All deployments and data associated with the service will be permanently removed.