Go

Go

Deploye Go-Services mit Procfile-basierten Workern, automatisch erkannten Datenbanken und Cron.

  • Erkannt anhand von go.mod; gebaut mit Railpack oder deinem Dockerfile. Ein Modul in einem Unterordner (server/go.mod neben einem frontend/) wird automatisch gefunden und von dort aus gebaut.
  • Die Binary muss auf $PORT lauschen (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 und DATABASE_URL/REDIS_URL automatisch 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, oder railyard 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.