How deployment works
In QuickStack, clicking Deploy is the only way to apply changes. Configuration edits (env vars, storage, domains, Git source, image name) are staged in the database but do not affect the running container until you click Deploy.
This is intentional: you can batch multiple config changes and apply them all at once.
What "Deploy" does
- For Git-source apps: pulls the latest commit from the configured branch, builds a new Docker image via BuildKit, pushes it to the internal registry.
- For Docker image apps: pulls the specified image tag from the configured registry.
- Applies all staged config changes (env vars, volumes, ports, network policies, health checks, etc.).
- Performs a rolling update: new pods are started, old pods are terminated once the new ones are healthy.
Without a configured health check, Kubernetes marks pods ready as soon as they start, which may be before your app is actually serving requests. Configure a readiness probe for zero-downtime deploys.
Environment variables
Environment variables are key-value pairs injected at runtime. They are stored in the QuickStack database and applied during the next deploy.
Editing env vars
- Open your app and go to the Environment tab.
- Edit variables in the text area, one
KEY=VALUEper line. - Click Save.
- Click Deploy for changes to take effect.
DATABASE_URL=postgres://user:pass@svc-app-xyz:5432/db
API_KEY=secret-api-key-123
NODE_ENV=production
PORT=3000
Changing env vars does not update the running container. You must Deploy again.
For database applications deployed via templates, do not manually change automatically generated env vars — this may break the pre-configured setup.
Referencing other apps (internal service discovery)
To connect to another app in the same project, use its internal hostname:
DATABASE_URL=postgres://user:pass@svc-app-xyz:5432/mydb
REDIS_URL=redis://svc-app-abc:6379
Find the internal hostname in the Domains tab → Internal Hostnames section of the target app.
Advanced: force-pull latest image tag
For Docker image apps using a mutable tag (e.g. :latest), clicking Deploy always pulls the latest version of that tag. There is no caching of mutable tags.
For Git apps, Deploy always builds from the latest commit on the configured branch.