Go

Go

Despliega servicios en Go con workers basados en Procfile, bases de datos autodetectadas y cron.

  • Se detecta a partir de go.mod; se construye con Railpack o tu Dockerfile. Un módulo en una subcarpeta (server/go.mod junto a un frontend/) se encuentra y se construye desde ahí automáticamente.
  • El binario debe escuchar en $PORT (y en todas las interfaces).
  • Un import de driver conocido (github.com/jackc/pgx, github.com/lib/pq, github.com/go-sql-driver/mysql, github.com/redis/go-redis…) provisiona su base de datos automáticamente e inyecta DATABASE_URL/REDIS_URL; de lo contrario, agrégala tú mismo desde la app o el canvas.

Workers: declara el proceso, Railyard lo escala

Go no tiene una convención de framework para trabajo en segundo plano, así que no hay nada que autodetectar — declara un segundo proceso en un Procfile en la raíz del módulo y corre y escala de forma independiente a web.

web: ./server
worker: ./server -mode=worker

Ambos ejecutan el mismo binario compilado; tu main() lee un flag o una variable de entorno para decidir qué loop ejecutar — un mismo código y un mismo build, varios tipos de proceso, el modelo de 12-factor. Agrega o edita procesos en la pestaña Workers de la app sin tocar el repositorio, y escala cualquiera de ellos desde la CLI:

railyard scale my-app worker=2

Para trabajo programado, usa Cron en lugar de un loop dormido en worker — ejecuta tu binario con un flag distinto según un horario y mantiene un historial de ejecuciones.

Configuración y secretos

Todo lo que tu binario lee con os.Getenv es una variable de entorno normal: defínela en Variables, o railyard env:set my-app KEY=VALUE desde la CLI, y el mismo binario compilado corre sin cambios desde staging hasta producción — paridad dev/prod, no una recompilación por entorno. Apunta a una base de datos o Redis que corra como su propio servicio en el canvas con ${{redis.RAILYARD_PRIVATE_URL}} — resuelto por entorno. Consulta Variables y secretos.

Despliégalo

  • Desde un repositorio: pega la URL de Git, o elígelo del selector una vez que conectes GitHub — Railyard construye con Railpack (o tu propio Dockerfile) y despliega con cada push.
  • Desde la CLI: railyard create my-app https://github.com/me/my-app --port 8080, o railyard deploy my-app --local para construir con tu propio Docker y subir una sola imagen en lugar de usar el builder del equipo.
  • Con un clic: agrega el botón de despliegue a tu README, o publícalo en el catálogo de plantillas para que cualquiera pueda lanzarlo con sus complementos y variables ya completados.