Русский

Блог · Гайды по деплою

Как задеплоить приложение на Gin в 2026: одна команда, HTTPS и Dockerfile, который остается у вас

Команда Pethost · · Обновлено · 7 мин чтения

У вас есть приложение на Gin, которое работает на ноутбуке, и вы хотите выложить его по адресу с HTTPS. На Pethost это одна команда, pethost deploy, в папке, где лежит go.mod. Она сама пишет Dockerfile, собирает программу и печатает ее адрес. Приложение из quickstart Gin в первый раз собралось и запустилось за 58 секунд, а во второй — за 2 секунды.

Коротко
  • Одна команда: pethost deploy в папке с go.mod. Не нужно ни писать файл конфигурации, ни заполнять настройки сборки.
  • Что она делает: читает версию Go из go.mod, пишет Dockerfile, который запускает go build, и запускает программу.
  • Порт: Gin слушает 8080, если PORT не задает другой. Pethost сам находит порт, который слушает программа, так что настраивать ничего не нужно.
  • Адрес: https://my-api.yourname.pethost.app, сразу с HTTPS. Свой домен — одна DNS-запись.
  • Цена: 9,99 € в месяц за 2 vCPU, 3 GB и 30 GB — для этого API и всех остальных ваших проектов. Бесплатного тарифа нет.

Что нужно, чтобы задеплоить приложение на Gin в 2026 году

Три вещи: само приложение, команда pethost и аккаунт Pethost.

Приложение здесь — то, что остается после quickstart Gin: go mod init my-api, go get github.com/gin-gonic/gin и вот этот main.go:

package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()
	router.GET("/ping", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "pong",
		})
	})
	router.Run() // listens on 0.0.0.0:8080 by default
}

Команда — это одна программа, которая ставится одной строкой. Все ее команды есть в справочнике CLI.

curl -fsSL https://pethost.dev/install.sh | sh      # macOS, Linux
irm https://pethost.dev/install.ps1 | iex           # Windows, in PowerShell

Аккаунту нужен тариф. Если вы не вошли, pethost deploy откроет браузер, и вы войдете. Если тарифа еще нет, команда покажет, где его выбрать, и подождет.

Деплой приложения на Gin одной командой

Перейдите в папку с go.mod и запустите pethost deploy. Вот весь экран для приложения из quickstart:

$ cd my-api
$ pethost deploy
Name it [my-api]:    it will live at https://my-api.sam.pethost.app
✓ Packed 3 files, 9 KB
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ Go program detected, wrote Dockerfile.
✓ Packed 4 files, 10 KB
✓ Uploaded straight to your machine
✓ Built and started in 58 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env
✓ app listens on 8080 → https://my-api.sam.pethost.app
  It answers 404.

https://my-api.sam.pethost.app

Wrote .pethost (commit it). Next:   pethost logs -f   ·   pethost open
  1. Она спрашивает одно Имя проекта — первое слово его адреса. Enter берет имя папки.
  2. Машина не находит, что запускать Строка с крестиком — ее ответ: проект запускается из Dockerfile или Compose-файла, а в папке пока нет ни того, ни другого.
  3. pethost пишет Dockerfile Он увидел go.mod и package main рядом с ним и загружает папку снова.
  4. Машина собирает и запускает его Она видит, что программа слушает порт 8080, и направляет туда адрес. Затем pethost сам открывает адрес и печатает, что тот ответил.

Ответ — 404, потому что в quickstart нет маршрута на /, только /ping. Ваш собственный API часто ответит так же, и это значит, что программа запущена и отвечает. Откройте маршрут, который есть:

$ curl https://my-api.sam.pethost.app/ping
{"message":"pong"}

Файл .pethost говорит, какой проект в этой папке. Закоммитьте его вместе с Dockerfile, и следующий деплой ничего не спросит.

Dockerfile, который pethost пишет для программы на Go

Вот этот файл целиком, каким он был записан в папку quickstart:

# Written by pethost deploy for this Go program: Go 1.25 (go.mod), its program is ..
# It is yours now: change it as you like. pethost does not write it again.

FROM golang:1.25
WORKDIR /app

COPY . .

RUN --mount=type=cache,target=/go/pkg/mod \
    --mount=type=cache,target=/root/.cache/go-build \
    go build -o /usr/local/bin/my-api .

CMD ["my-api"]

Его первая строка говорит, что pethost прочитал в вашей папке. Оттуда берутся три вещи:

Два монтирования кеша хранят модули и кеш сборки Go на вашей машине между деплоями. Поэтому второй деплой занял 2 секунды. Если машина не может собрать или запустить Dockerfile, который написал pethost, pethost убирает файл из вашей папки и говорит, что не получилось.

Как задать GIN_MODE и другие переменные окружения

Gin запускается в режиме отладки: его строки лога начинаются с [GIN-debug]. В логе также видно, какой порт он занял:

$ pethost logs
2026-10-10T11:15:22Z	app	[GIN-debug] GET    /ping                     --> main.main.func1 (3 handlers)
2026-10-10T11:15:22Z	app	[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
2026-10-10T11:15:22Z	app	[GIN-debug] Listening and serving HTTP on :8080

Переменная — это одна команда. Она попадает в файл .env проекта на машине, который сохраняют все следующие деплои, и приложение перезапускается уже с ней:

$ pethost env set GIN_MODE=release
my-api (.pethost)
✓ /.env has GIN_MODE now. Deployed in 4 s.

Если указать только имя, команда спросит значение, не показывая его, — так задают секреты: pethost env set DATABASE_URL. Задавать PORT не нужно: с router.Run() Gin берет 8080, а с router.Run(":3000") машина точно так же найдет 3000.

Измените код и задеплойте снова

Отредактируйте обработчик и запустите ту же команду. Машина хранит слои сборки и кеши Go:

$ pethost deploy
my-api (.pethost)
✓ Packed 5 files · uploaded · built and started in 2 s
  · kept the project's .env
  · wrote compose.yaml for the Dockerfile: the service app, reading .env
  · kept the project's x-pethost
  It answers 404.
https://my-api.sam.pethost.app

Чтобы вместо этого деплоить каждый пуш, один раз подключите репозиторий:

pethost github sam/my-api          # from now on, every push deploys itself

Pethost читает только те репозитории, которые вы дали его GitHub App. Если деплой пошел не так, pethost rollback возвращает предыдущую версию, а ваша машина хранит три версии перед текущей. ИИ-агент может сделать все это за вас через MCP-сервер Pethost: как агент деплоит проект и следит за ним. Та же команда деплоит приложение на Fiber.

Свой домен для API

Любое имя в домене вашего аккаунта сразу становится адресом с HTTPS. Для своего домена нужны одна команда и одна DNS-запись:

pethost domain add api.example.com

Команда печатает запись, которую нужно создать: CNAME с вашего имени на имя вашей машины. Сертификат появляется сам, как только имя начинает указывать на машину, и сам продлевается.

Что вы получаете за эти деньги

Pethost стоит 9,99 € в месяц за все, что вы хостите, на 2 vCPU, 3 GB памяти и 30 GB диска. Программа на Gin — это один небольшой бинарник, так что на машине остается место для ее базы данных, воркера и других ваших проектов. Платы за проект нет, и ничего не считается по счетчику: второй API не стоит ничего сверх этого, а Postgres рядом с ним входит в ту же цену.

Что уже сделано за вас: HTTPS с сертификатами, которые продлеваются сами, деплои из GitHub, ночные бэкапы, которые хранятся 14 дней, SSH в любой контейнер и учет каждого запроса. Панель показывает самые популярные пути и долю ошибок за последние 30 дней, а для API это список маршрутов, которые на самом деле вызывают. Машина всегда включена, поэтому запрос никогда не ждет холодного старта. Тарифы — в разделе цен на главной странице.

Какие маршруты вызывают. Десять самых популярных путей проекта с их долей и временем ответа, и лог отдельных запросов.
Панель Pethost: десять самых популярных путей проекта с долей, числом запросов и временем ответа, и лог отдельных запросов.

Pethost — лучший выбор для

  • Go-разработчиков с небольшим API: программа, ее база данных и воркер на одной машине, с одним счетом
  • Разработчиков-одиночек с несколькими личными проектами, у каждого из которых свой адрес
  • Людей, за которых деплоит агент: Claude Code или Codex выкладывает API и читает его логи
  • Стартапов на ранней стадии, которым нужны фиксированные расходы в месяц, пока продукт небольшой

Ищите другое, если

  • Вашему приложению нужны несколько регионов или автомасштабирование

Вопросы

Нужен ли Dockerfile, чтобы задеплоить приложение на Gin?

На Pethost проект запускается из Dockerfile или Compose-файла, и писать его самому не нужно: в папке, где нет ни того, ни другого, pethost deploy пишет Dockerfile для программы на Go и деплоит ее. Файл остается в вашей папке, и его можно менять.

Какой порт должно слушать приложение на Gin?

Любой. С router.Run() Gin слушает 8080 или порт, указанный в переменной PORT. Pethost находит порт, который слушает программа, и направляет туда адрес по HTTPS.

Как задать GIN_MODE=release в продакшене?

Запустите pethost env set GIN_MODE=release в папке проекта. Переменная попадает в файл .env проекта на машине, приложение перезапускается с ней, и следующие деплои ее сохраняют.

Почему pethost deploy пишет «It answers 404» для моего API на Gin?

После деплоя pethost открывает адрес / и печатает ответ. API без маршрута на / отвечает там 404, и это все равно показывает, что программа запущена. Откройте один из своих маршрутов, чтобы увидеть, что она работает.

Можно ли деплоить приложение на Gin из GitHub при каждом пуше?

Да. Один раз задеплойте папку через pethost deploy, затем запустите pethost github owner/repository. С этого момента каждый пуш в репозиторий деплоится сам, а pethost rollback возвращает более ранний коммит.

Сколько стоит хостинг API на Gin на Pethost?

9,99 € в месяц за Starter: 2 vCPU, 3 GB и 30 GB без платы за проект, так что там же работают ваши другие API, сайты и базы данных. Бесплатного тарифа нет. Цены без НДС.

На экранах — деплои приложения, которое пишет quickstart Gin, с Gin 1.12.0, Go 1.25 и pethost 0.2.1 на нашей тестовой машине, которая до этого ничего не собирала. Аккаунт на них — пример, sam.

  1. Gin: quickstart
  2. Gin: деплой
  3. pethost, командная строка Pethost

Запустите свои проекты уже сегодня

Деплойте приложения, ботов и базы данных из агента, с GitHub или в браузере, сколько поместится, по одной фиксированной цене. Ничего по счётчику, ничего сверху.

Разместить проекты за 9,99 €/мес