Go
Despliega servicios en Go con workers basados en Procfile, bases de datos autodetectadas y cron.
Paso a paso: Desplegar Go en DigitalOcean · Desplegar Go en Hetzner · Desplegar Go en Vultr · Desplegar Go en OVHcloud · Desplegar Go en Scaleway · Desplegar Go en UpCloud
- Se detecta a partir de
go.mod; se construye con Railpack o tu Dockerfile. Un módulo en una subcarpeta (server/go.modjunto a unfrontend/) 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 inyectaDATABASE_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, orailyard deploy my-app --localpara 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.