Go
Deploye Go-Services mit Procfile-basierten Workern, automatisch erkannten Datenbanken und Cron.
Schritt für Schritt: Go auf DigitalOcean deployen · Go auf Hetzner deployen · Go auf Vultr deployen · Go auf OVHcloud deployen · Go auf Scaleway deployen · Go auf UpCloud deployen
- Erkannt anhand von
go.mod; gebaut mit Railpack oder deinem Dockerfile. Ein Modul in einem Unterordner (server/go.modneben einemfrontend/) wird automatisch gefunden und von dort aus gebaut. - Die Binary muss auf
$PORTlauschen (und auf allen Interfaces). - Ein bekannter Treiber-Import (
github.com/jackc/pgx,github.com/lib/pq,github.com/go-sql-driver/mysql,github.com/redis/go-redis…) sorgt dafür, dass seine Datenbank provisioniert undDATABASE_URL/REDIS_URLautomatisch injiziert wird; füge sonst selbst eine über die App oder den Canvas hinzu.
Workers: Prozess deklarieren, Railyard skaliert ihn
Go hat keine Framework-Konvention für Hintergrundarbeit, also gibt es nichts automatisch zu erkennen — deklariere einen zweiten Prozess in einem Procfile im Modul-Root, und er läuft und skaliert unabhängig von web.
web: ./server
worker: ./server -mode=worker
Beide führen dieselbe gebaute Binary aus; dein main() liest ein Flag oder eine Env-Variable, um zu entscheiden, welche Schleife läuft — eine Codebasis und ein Build, mehrere Prozesstypen, das 12-Factor-Modell. Füge Prozesse im Tab Workers der App hinzu oder bearbeite sie, ohne das Repo zu berühren, und skaliere jeden einzelnen über die CLI:
railyard scale my-app worker=2
Für geplante Arbeit nutze Cron statt einer schlafenden Schleife in worker — es führt deine Binary nach Zeitplan mit einem anderen Flag aus und behält eine Lauf-Historie.
Konfiguration und Secrets
Alles, was deine Binary mit os.Getenv liest, ist eine normale Env-Variable: Setze sie unter Variables, oder railyard env:set my-app KEY=VALUE über die CLI, und dieselbe gebaute Binary läuft unverändert von Staging bis Produktion — Dev/Prod-Parität, kein Neukompilieren pro Umgebung. Verweise auf eine Datenbank oder Redis, die als eigener Dienst auf dem Canvas laufen, mit ${{redis.RAILYARD_PRIVATE_URL}} — pro Umgebung aufgelöst. Siehe Variablen und Secrets.
So deployst du
- Aus einem Repo: Füge die Git-URL ein, oder wähle es aus der Liste, sobald GitHub verbunden ist — Railyard baut mit Railpack (oder deinem eigenen Dockerfile) und deployt bei jedem Push.
- Über die CLI:
railyard create my-app https://github.com/me/my-app --port 8080, oderrailyard deploy my-app --local, um mit deinem eigenen Docker zu bauen und ein einzelnes Image zu pushen, statt den Builder des Teams zu nutzen. - Ein Klick: Füge den Deploy-Button zu deiner README hinzu, oder veröffentliche im Template-Katalog, damit jeder es mit bereits ausgefüllten Addons und Variablen starten kann.