microsoft / microsoft/aspire

Feature: SSH + Docker Compose remote deployment pipeline with automatic TLS and YARP ingress

Open
#11,209 0 comments 10 reactions 0 assignees View on GitHub
area-deployment docker-compose yarp
Dominant language
C#
Stars
6.3k
Forks
991
Avg merge
2d 15h
Merged PRs (30d)
196

Description

### Summary

Add an optional deployment pipeline to Aspire built on top of the Docker Compose environment, enabling deployment of Aspire applications to a remote VM via SSH. This pipeline is **targeted at small, non-enterprise deployments and hobbyist use cases**. It should:
- Built on top of the Docker Compose environment (not just reuse outputs)
- Build and push container images to registry
- Prompt for remote host, credentials, and deployment path
- Transfer compose files and merged environment variables
- Run `docker compose up -d` on remote host
- Health check services
- Provide step-wise progress and error reporting

#### Key Requirements
- CLI: `aspire deploy` (no additional arguments; works interactively and in CI)
- Interactive prompting for missing configuration, with support for non-interactive CI mode (via env/config)
- Registry support for container images
- Remote environment preparation (directory, Docker/compose, permissions)
- Step-wise reporting: prerequisites, image push, SSH, environment, transfer, deploy
- Merged .env management with auto-injected SERVICE_IMAGE tags

### Automatic TLS & Reverse Proxy (YARP)
- Integrate automatic TLS provisioning for exposed endpoints, using Let's Encrypt or self-signed certs
- Add YARP reverse proxy for ingress, with generated config, to front all HTTP services
- YARP configuration and TLS certificate management should be automated as part of the pipeline
- Document how custom ingress rules can be integrated

### Motivation
- Streamline intermediate deployments to SSH-accessible VMs with Docker, without requiring cloud orchestration
- Provide secure (TLS) ingress for all HTTP endpoints out-of-the-box
- Enable Aspire applications to be deployed with a single command for dev/test, hobby, or small-scale production
- **Intended for small-scale, non-enterprise use; not recommended for production at scale or regulated environments**
- Improve developer experience for remote deployments, and provide a foundation for additional pipeline types (K8s, cloud, etc.)

### References
- Prototype: [aspire-ssh-deploy](https://github.com/davidfowl/aspire-ssh-deploy)
- YARP: [https://github.com/microsoft/reverse-proxy](https://github.com/microsoft/reverse-proxy)

### Future Enhancements
- Multi-host/cluster SSH deployments
- CI/CD workflow scaffolding
- Advanced ingress (multi-cert, custom domains)

---

Labels: area-deployment, docker-compose, yarp, small-deployment, hobbyist

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.