Naučte sa používať Docker na efektívne balenie a nasadenie aplikácií Go, vďaka čomu sú prenosné a ľahko spravovateľné.
Docker je vďaka svojej jednoduchosti a jednoduchosti použitia najobľúbenejšou technológiou kontajnerovania. Docker zmierňuje stres z problémov s prenosnosťou pri vývoji a distribúcii softvéru. Svoje dokovacie kontajnery môžete nasadiť väčšine poskytovateľov cloudových služieb.
Kontajnerovanie aplikácií Go pomocou Docker vám môže pomôcť zabezpečiť konzistentné a spoľahlivé nasadenie v rôznych prostrediach. Aplikácie Go môžete nasadiť do rôznych prostredí, ako je vývoj, príprava a produkcia. Kontajnery Docker sú ľahké a zaberajú menej miesta ako tradičné virtuálne stroje. To vám môže ušetriť peniaze na nákladoch na hosťovanie a môže to tiež urýchliť vaše nasadenia.
Nastavenie jednoduchého webového servera v Go
Štandardná knižnica Go obsahuje balíčky, ktoré budete potrebovať na nastavenie jednoduchého webového servera.
Najprv importujte súbor http, log, a json balíkov. budete používať
Prejsť na http balík na nastavenie servera a GET žiadať koncový bod. The log balík na zaznamenávanie možných chýb do vašej konzoly. The json balík na kódovanie štruktúry do JSON pre koncový bod API.importovať (
"kódovanie/json"
"log"
"net/http"
)
Inštanciu štruktúry môžete klientovi zakódovať ako JSON ako odpoveď na základe platnosti požiadavky takto:
typu Správa štrukturovať {
odpoveď reťazec`json:"response"`
Popis reťazec`json:"popis"`
}
Funkcia handlera by klientovi vrátila úspešnú správu, ak je požiadavka na koncový bod a GET žiadosť.
// dockerTestEndpoint spracováva koncový bod API na testovanie pripojenia Docker
funcdockerTestEndpoint(spisovateľ http. ResponseWriter, vyžiadajte *http. žiadosť) {// Nastavenie hlavičky odpovede na označenie obsahu JSON
spisovateľ. Header().Set("Druh obsahu,""application/json")// Ak je metóda požiadavky GET
ak žiadosť. Metóda == "ZÍSKAŤ" {// Nastavte kód stavu odpovede na 200 OK
spisovateľ. WriteHeader (http. Stav OK)// Vytvorte štruktúru správy pre úspešnú odpoveď
správa := správa{
odpoveď: "Úspešný",
Popis: "Úspešne ste zasiahli koncový bod API" +
„Z vášho kontajnera Docker“,
}
// Zakódujte správu ako JSON a odošlite ju ako odpoveď
chyba := json. NewEncoder (zapisovač).Encode(&správa)
ak chyba!= nula {
vrátiť
}
} inak {// Ak metóda požiadavky nie je GET
// Nastavte kód stavu odpovede na 400 Bad Request
spisovateľ. WriteHeader (http. StatusBadRequest)// Vytvorte štruktúru správy pre zlú odpoveď na požiadavku
správa := správa{
odpoveď: "Zlá požiadavka",
Popis: "Úspešne ste zasiahli koncový bod API zo svojho " +
"Docker Container, ale urobili ste zlú požiadavku",
}
// Zakódujte správu ako JSON a odošlite ju ako odpoveď
chyba := json. NewEncoder (zapisovač).Encode(&správa)
ak chyba!= nula {
vrátiť
}
}
}
Funkciu handlera nastavíte v hlavnej funkcii s trasou ako /api/docker/go. The dockerTestEndpoint funkcia handler overí, že požiadavka na handler je požiadavka GET. Ak ide o požiadavku GET, zakóduje inštanciu Správa inštanciu štruktúry klientovi na základe stavu požiadavky.
Tu je návod, ako môžete pripojiť funkciu obsluhy na trase a nastaviť server tak, aby bežal na porte 8080:
funcHlavná() {
// Zaregistrujte funkciu obsluhy 'dockerTestEndpoint'
// na spracovanie požiadaviek na adresu URL "/api/docker/go".
http. HandleFunc("/api/docker/go", dockerTestEndpoint)
// Spustite server HTTP a počúvajte prichádzajúce požiadavky na porte 8080.
chyba := http. Počúvaj a podávaj (":8080", nula)
ak chyba!= nula {
log. Fatalln("Vyskytla sa chyba servera:", chyba)
}
}
The Hlavná je vstupný bod servera, ktorý počúva na porte 8080. The HandleFunc metóda pripojí cesty k funkcii handlera. The Počúvajte a podávajte metóda spustí server na zadanom lokálnom hostiteľskom porte 8080.
Začíname s kontajnerovaním aplikácií Go pomocou Dockeru
Po inštalácii a nastavení Dockeru budete potrebovať súbor Docker s názvom Dockerfile na vytvorenie a zostavenie obrazu Docker pre vašu aplikáciu Go. Zadáte príkazy pre základný obrázok a príkazy na kopírovanie súborov, pridanie pracovného adresára a spustenie aplikácie v súbore Dockerfile.
Spustite tento príkaz v termináli vášho pracovného priestoru a vytvorte súbor Dockerfile.
dotknite sa položky Dockerfile
Príkazy na vytvorenie obrazu Docker zadáte v súbore Docker.
Ak existujú nejaké súbory, ktoré chcete oddeliť od obrazu Docker, môžete použiť a .dockerignore súbor. The .dockerignore súbory fungujú presne ako .gitignore súbory.
dotýkať sa .dockerignore
Ďalej zadáte príkazy na zostavenie vo svojom súbore Dockerfile na kontajnerové spracovanie aplikácií.
Definovanie príkazov v súbore Dockerfile
Dockerfiles sú prispôsobiteľné na základe špecifikácií vášho projektu. Budete definovať príkazy na vytvorenie základného obrazu na zostavenie aplikácie.
Tu je príklad obsahu súboru Dockerfile, ktorý vytvára webový server vyššie:
# Použite základný obrázok Golang
OD golang: najnovšie# Nastavte pracovný adresár vo vnútri kontajnera
WORKDIR /app# Skopíruje všetky súbory v lokálnom adresári do pracovného adresára v kontajneri
KOPÍROVAŤ. .# Stiahnite si závislosti modulu Go
RUN choď na stiahnutie modu# Vytvorte aplikáciu Go
RUN prejdite na zostavenie aplikácie -o
# Nastavte vstupný bod pre aplikáciu
VSTUPNÝ BOD ["./app"]
Dockerfile používa golang: najnovšie základný obrázok, na zostavenie aplikácie po nastavení pracovného adresára /app.
Dockerfile skopíruje súbory s príponou KOPÍROVAŤ príkaz a stiahne závislosti s RUN príkaz.
Súbor špecifikuje operáciu zostavenia a spustenia s RUN príkaz, potom nastaví príkaz tak, aby sa spustil, keď kontajner začína s CMD príkaz.
Uložte súbor Docker do rovnakého adresára ako váš go.mod a main.go súbory; potom spustite tento príkaz na vytvorenie obrazu Docker z tohto súboru Docker:
docker build -t GolangTutorial .
Vyššie uvedený príkaz vytvorí obrázok Docker so značkou golangtutorial. Kontajner môžete spustiť pomocou tohto príkazu:
docker run -p 8080:8080 golangtutorial
Príkaz mapuje port 8080 z kontajnera na port 8080 na localhost hostiteľského počítača. Server spustený v kontajneri Docker si môžete vyžiadať z hostiteľského počítača.
Tu je výsledok z odoslanie požiadavky CURL na server, tentoraz beží na Docker:
Docker Compose môžete použiť na organizáciu kontajnerov
Docker Compose je nástroj, ktorý môžete použiť na organizáciu (prácu s mnohými) kontajnermi Docker. Docker Compose vám umožňuje definovať aplikáciu s viacerými kontajnermi v jednom súbore YAML. Celú aplikáciu spustíte a spravujete jediným príkazom.
Docker Compose môžete použiť na nasadenie a správu zložitých kontajnerových aplikácií. Docker Compose zjednodušuje správu pomocou automatizovaných a konzistentných nasadení.