Блог · Гайди з деплою
Як задеплоїти застосунок на Gin у 2026: одна команда, HTTPS і Dockerfile, що лишається у вас
У вас є застосунок на 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
- Вона питає одне Назву проєкту, яка стає першим словом його адреси. Enter бере назву папки.
- Машина не знаходить, що запускати Рядок із хрестиком — це її відповідь: проєкт запускається з Dockerfile або файлу Compose, а в папці поки немає ні того, ні іншого.
- pethost пише Dockerfile Він побачив
go.modі поруч із нимpackage mainта завантажує папку ще раз. - Машина збирає й запускає програму Вона бачить, що програма слухає порт 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 — та, що стоїть у рядку
goфайлуgo.mod. - Програма — це
package mainу корені модуля або та єдина папка вcmd/, де він є. Якщо вcmd/таких кілька, pethost нічого не пише й пояснює чому: яку програму отримають відвідувачі, вирішувати вам. - Назва — остання частина шляху модуля, як її назвав би
go install. Якщо єProcfileз рядкомweb, програма запускається так, як каже цей рядок.
Два монтування кешу зберігають модулі Go та кеш збірки на вашій машині між деплоями. Саме тому другий деплой зайняв 2 секунди. Якщо машина не може зібрати чи запустити Dockerfile, який написав pethost, pethost забирає цей файл із вашої папки й каже, що не вдалося.
Задайте GIN_MODE та інші змінні середовища
Gin запускається в режимі debug: його рядки логу починаються з [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 поруч із ним входить у ту саму ціну.
- 9,99 € на місяць за всі ваші проєкти, без оплати за використання
- 58 с на першу збірку й запуск quickstart
- 2 с на наступний деплой
Що вже зроблено за вас: HTTPS із сертифікатами, які поновлюються самі, деплої з GitHub, щонічні бекапи, що зберігаються 14 днів, SSH у будь-який контейнер і облік кожного запиту. Панель показує найпопулярніші шляхи й частку помилок за останні 30 днів, а для API це і є список маршрутів, які люди справді викликають. Машина працює завжди, тож запит ніколи не чекає на холодний старт. Тарифи — у розділі ціни на головній сторінці.
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.
Запустіть свої проєкти вже сьогодні
Деплойте застосунки, ботів і бази даних з агента, з GitHub або в браузері, скільки поміститься, за однією фіксованою ціною. Нічого за лічильником, нічого зверху.