DeployCode
Фреймворки

Go

Деплой сервиса на Go.

Как Railpack собирает Go

Проект распознаётся по go.mod, go.work или main.go в корне. Railpack собирает статический бинарник (CGO_ENABLED=0) и запускает его.

Какой пакет собирается (по приоритету):

  1. Модуль из RAILPACK_GO_WORKSPACE_MODULE (для go.work).
  2. Пакет из RAILPACK_GO_BIN.
  3. Корень репозитория, если в нём есть Go-файлы.
  4. Первый подкаталог в cmd/.

Если в cmd/ несколько программ, укажите нужную через RAILPACK_GO_BIN.

Порт

Слушайте порт из переменной PORT на всех интерфейсах:

port := os.Getenv("PORT")
if port == "" {
	port = "3000"
}
log.Fatal(http.ListenAndServe(":"+port, handler))

Добавьте приложению переменную PORT со значением порта контейнера из домена.

Версия Go

Берётся из (по приоритету): mise.toml или .tool-versions, go.mod, переменной RAILPACK_GO_VERSION. По умолчанию — 1.23.

CGO

Если нужны C-библиотеки (например, go-sqlite3), задайте CGO_ENABLED=1 — Railpack добавит компилятор и системные библиотеки для сборки.

Полезные переменные Railpack

ПеременнаяЧто делает
RAILPACK_GO_VERSIONВерсия Go
RAILPACK_GO_BINКакую программу из cmd/ собрать
RAILPACK_GO_WORKSPACE_MODULEКакой модуль workspace собрать
CGO_ENABLED1 — включить CGO

На этой странице