Skip to content

☁️ Deploying to Remote Environments

SuperStack is Docker-native, so deployments are simple, consistent, and portable.

The goal is that only compose.yaml and secrets need to exist on the remote server.

🧱 1. Build Your Images

If a service has a build: section, add your own image: name and version tag:

app/compose.yaml
services:
  caddy:
    build:
      context: ./caddy
    image: ghcr.io/youruser/yourapp-caddy:0.1.0

Build and push your images:

cd app
docker compose build
docker compose push
cd ..

📦 2. Copy to Server

Copy your compose.yaml to the remote host:

scp app/compose.yaml youruser@yourserver:

3. Set Secrets

Your app will need credentials such as database passwords or API keys. Choose one of these approaches:

  1. .env file — simply place a .env file alongside your compose.yaml. Be sure to chmod 600 .env.
  2. Environment variables — pass secrets directly to the command line.
  3. CI/CD injection — good for automated pipelines.

🚀 3. Launch the App

Start the application on the server:

docker compose up -d

Your backend is now live. 🚀


Upgrading

To upgrade your app, simply increment the image tag versions in compose.yaml.

The rest is the same:

  1. docker compose build
  2. docker compose push
  3. scp compose.yaml yourserver:
  4. docker compose up -d

🧭 Next Steps

If you want zero-downtime deployments, rollback support, or blue-green testing, continue to Advanced Deployments.