Blog · Poradniki wdrożeń
Jak wdrożyć aplikację Gin w 2026: jedno polecenie, HTTPS i Dockerfile, który zostaje u ciebie
Masz aplikację Gin, która działa na twoim laptopie, i chcesz ją mieć w sieci pod adresem z HTTPS. Na Pethost to jedno polecenie, pethost deploy, uruchomione w katalogu z go.mod. Samo pisze za ciebie Dockerfile, buduje program i wypisuje jego adres. Aplikacja z quickstartu Gina za pierwszym razem zbudowała się i uruchomiła w 58 sekund, a za drugim w 2 sekundy.
- Jedno polecenie:
pethost deployw katalogu zgo.mod. Nie trzeba pisać pliku konfiguracyjnego ani wypełniać ustawień builda. - Co robi: czyta wersję Go z
go.mod, pisze Dockerfile, który uruchamiago build, i uruchamia program. - Port: Gin nasłuchuje na 8080, chyba że
PORTmówi inaczej. Pethost sam znajduje port, na którym nasłuchuje program, więc nic nie ustawiasz. - Adres:
https://my-api.yourname.pethost.app, od razu z HTTPS. Twoja własna domena to jeden rekord DNS. - Cena: 9,99 € miesięcznie za 2 vCPU, 3 GB i 30 GB, na to API i każdy inny twój projekt. Nie ma darmowego planu.
Czego potrzebujesz, żeby wdrożyć aplikację Gin w 2026
Trzech rzeczy: aplikacji, polecenia pethost i konta Pethost.
Aplikacja to tutaj ta, którą zostawia quickstart Gina: go mod init my-api, go get github.com/gin-gonic/gin i ten 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
}
Polecenie to jeden program, instalowany jedną linią. Wszystkie jego polecenia są w dokumentacji CLI.
curl -fsSL https://pethost.dev/install.sh | sh # macOS, Linux
irm https://pethost.dev/install.ps1 | iex # Windows, in PowerShell
Konto potrzebuje planu. Jeśli nie jesteś zalogowany, pethost deploy otwiera przeglądarkę i cię loguje. Jeśli nie masz jeszcze planu, pokazuje, gdzie go wybrać, i czeka.
Wdróż aplikację Gin jednym poleceniem
Przejdź do katalogu z go.mod i uruchom pethost deploy. Oto cały ekran dla quickstartu:
$ 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
- Pyta o jedno O nazwę projektu, która jest pierwszym słowem jego adresu. Enter bierze nazwę katalogu.
- Maszyna nie znajduje nic do uruchomienia Linia z krzyżykiem to jej odpowiedź: projekt działa z Dockerfile albo z pliku Compose, a w katalogu nie ma jeszcze żadnego z nich.
- pethost pisze Dockerfile Zobaczył
go.mod, a obok niegopackage main, i wgrywa katalog jeszcze raz. - Maszyna buduje i uruchamia program Widzi, że program nasłuchuje na porcie 8080, i tam kieruje adres. Potem pethost sam odpytuje adres i wypisuje, co ten odpowiedział.
Odpowiedź to 404, bo quickstart nie ma trasy pod /, tylko /ping. Twoje własne API często powie to samo, a to znaczy, że program działa i odpowiada. Odpytaj trasę, która istnieje:
$ curl https://my-api.sam.pethost.app/ping
{"message":"pong"}
Plik .pethost mówi, którym projektem jest ten katalog. Zrób jego commit razem z Dockerfile, a następne wdrożenie o nic nie zapyta.
Dockerfile, który pethost pisze dla programu w Go
Oto cały plik, tak jak trafił do katalogu quickstartu:
# 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"]
Jego pierwsza linia mówi, co pethost przeczytał w twoim katalogu. Stamtąd biorą się trzy rzeczy:
- Wersja Go to ta z linii
gowgo.mod. - Program to
package mainw katalogu głównym modułu albo ten jeden katalog wcmd/, który go ma. Gdy wcmd/jest ich kilka, pethost nic nie pisze i mówi dlaczego: to ty decydujesz, który program dostaną odwiedzający. - Nazwa to ostatnia część ścieżki modułu: tak nazwałoby program polecenie
go install.Procfilez liniąweburuchamia program tak, jak mówi ta linia.
Dwa montowania cache trzymają moduły Go i cache builda na twojej maszynie między wdrożeniami. Dlatego drugie wdrożenie trwało 2 sekundy. Jeśli maszyna nie zbuduje albo nie uruchomi Dockerfile napisanego przez pethost, pethost usuwa ten plik z twojego katalogu i mówi, co się nie udało.
Ustaw GIN_MODE i inne zmienne środowiskowe
Gin startuje w trybie debug: jego linie logu zaczynają się od [GIN-debug]. Log mówi też, który port wziął:
$ 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
Zmienna to jedno polecenie. Trafia do pliku .env projektu na maszynie, który zachowuje każde kolejne wdrożenie, a aplikacja uruchamia się z nią od nowa:
$ pethost env set GIN_MODE=release
my-api (.pethost)
✓ /.env has GIN_MODE now. Deployed in 4 s.
Sama nazwa pyta o wartość, nie pokazując jej, i tak podaje się sekret: pethost env set DATABASE_URL. Nie musisz ustawiać PORT: z router.Run() Gin bierze 8080, a z router.Run(":3000") maszyna tak samo znajduje 3000.
Zmień kod i wdróż ponownie
Zmień handler i uruchom to samo polecenie. Maszyna przechowuje warstwy builda i cache 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
Żeby zamiast tego wdrażać po każdym pushu, podłącz raz repozytorium:
pethost github sam/my-api # from now on, every push deploys itself
Pethost czyta tylko repozytoria udostępnione jego GitHub App. Jeśli wdrożenie pójdzie źle, pethost rollback przywraca wersję sprzed niego, a twoja maszyna trzyma trzy wersje sprzed bieżącej. Agent AI może zrobić to wszystko za ciebie przez serwer MCP Pethost: jak agent wdraża projekt i o niego dba. To samo polecenie wdraża aplikację Fiber.
Użyj własnej domeny dla API
Każda nazwa pod domeną twojego konta od razu jest adresem, z HTTPS. Domena, którą masz, to jedno polecenie i jeden rekord DNS:
pethost domain add api.example.com
Polecenie wypisuje rekord do utworzenia: CNAME z twojej nazwy na nazwę twojej maszyny. Certyfikat pojawia się sam, gdy tylko nazwa zacznie się rozwiązywać, i sam się odnawia.
Co dostajesz za tę cenę
Pethost kosztuje 9,99 € miesięcznie za wszystko, co hostujesz, na 2 vCPU, 3 GB pamięci i 30 GB dysku. Program w Ginie to jedna mała binarka, więc na maszynie zostaje miejsce na jego bazę danych, workera i twoje inne projekty. Nie ma opłaty za projekt ani żadnych liczników: drugie API nic więcej nie kosztuje, a Postgres obok niego jest w tej samej cenie.
- 9,99 € miesięcznie za wszystkie twoje projekty, bez liczników
- 58 s na zbudowanie i uruchomienie quickstartu za pierwszym razem
- 2 s na kolejne wdrożenie
Co jest już zrobione za ciebie: HTTPS z certyfikatami, które same się odnawiają, wdrożenia z GitHuba, nocne backupy trzymane przez 14 dni, SSH do każdego kontenera i każde żądanie policzone. Panel pokazuje najczęściej odwiedzane ścieżki i odsetek błędów z ostatnich 30 dni, a w przypadku API to lista tras, które ludzie naprawdę wywołują. Maszyna działa cały czas, więc żądanie nigdy nie czeka na zimny start. Plany są w cenniku na stronie głównej.
Pethost to najlepszy wybór dla
- Programistów Go z małym API: program, jego baza danych i worker na jednej maszynie, na jednym rachunku
- Programistów solo z kilkoma projektami pobocznymi, każdym pod własnym adresem
- Osób, za które wdraża agent: Claude Code albo Codex wystawia API do sieci i czyta jego logi
- Wczesnych startupów, które chcą stałego miesięcznego kosztu, póki produkt jest mały
Poszukaj gdzie indziej, jeśli
- Twoja aplikacja potrzebuje kilku regionów albo autoskalowania
Pytania
Czy aplikacja Gin potrzebuje Dockerfile do wdrożenia?
Na Pethost projekt działa z Dockerfile albo z pliku Compose, ale nie musisz go pisać: w katalogu, w którym nie ma żadnego z nich, pethost deploy pisze Dockerfile dla programu w Go i go wdraża. Plik zostaje w twoim katalogu i możesz go zmieniać.
Na jakim porcie powinna nasłuchiwać aplikacja Gin?
Na dowolnym. Z router.Run() Gin nasłuchuje na 8080 albo na porcie, który podaje zmienna PORT. Pethost znajduje port, na którym nasłuchuje program, i tam kieruje adres, przez HTTPS.
Jak ustawić GIN_MODE=release na produkcji?
Uruchom pethost env set GIN_MODE=release w katalogu projektu. Zmienna trafia do pliku .env projektu na maszynie, aplikacja uruchamia się z nią od nowa, a kolejne wdrożenia ją zachowują.
Dlaczego pethost deploy pokazuje „It answers 404” dla mojego API w Gin?
Po wdrożeniu pethost odpytuje adres / i wypisuje odpowiedź. API bez trasy pod / odpowiada tam 404, co i tak pokazuje, że program działa. Odpytaj jedną ze swoich tras, żeby zobaczyć program w akcji.
Czy mogę wdrażać aplikację Gin z GitHuba po każdym pushu?
Tak. Wdróż katalog raz przez pethost deploy, a potem uruchom pethost github owner/repository. Od tej chwili każdy push do repozytorium sam się wdraża, a pethost rollback wraca do wcześniejszego commita.
Ile kosztuje hosting API w Gin na Pethost?
9,99 € miesięcznie za plan Starter, z 2 vCPU, 3 GB i 30 GB, bez opłaty za projekt: twoje inne API, strony i bazy danych też tam działają. Nie ma darmowego planu. Ceny są bez VAT.
Ekrany to wdrożenia aplikacji, którą pisze quickstart Gina, z Gin 1.12.0, Go 1.25 i pethost 0.2.1, na naszej maszynie testowej, która wcześniej niczego nie budowała. Konto na nich to przykładowe sam.
Opublikuj swoje projekty jeszcze dziś
Wdrażaj aplikacje, boty i bazy danych ze swojego agenta, z GitHuba lub w przeglądarce, tyle, ile się zmieści, w jednej stałej cenie. Nic liczonego za zużycie, nic doliczanego.