Naučte se používat Docker k efektivnímu zabalení a nasazení aplikací Go, díky čemuž jsou přenosné a snadno se spravují.

Docker je nejoblíbenější kontejnerizační technologie díky své jednoduchosti a snadnému použití. Docker uvolňuje stres z problémů s přenositelností při vývoji a distribuci softwaru. Dokovací kontejnery můžete nasadit většině poskytovatelů cloudových služeb.

Kontejnerování aplikací Go pomocí Dockeru vám může pomoci zajistit konzistentní a spolehlivé nasazení v různých prostředích. Své aplikace Go můžete nasadit do různých prostředí, jako je vývoj, příprava a produkce. Docker kontejnery jsou lehké a zabírají méně místa než tradiční virtuální stroje. To vám může ušetřit peníze na hostování a také to může zrychlit vaše nasazení.

Nastavení jednoduchého webového serveru v Go

Standardní knihovna Go obsahuje balíčky, které budete potřebovat k nastavení jednoduchého webového serveru.

Nejprve importujte http, log, a json balíčky. budete používat Go's http balíček k nastavení serveru a

instagram viewer
DOSTAT koncový bod požadavku. The log balíček pro protokolování možných chyb do vaší konzole. The json balíček pro kódování struktury do JSON pro koncový bod API.

import (
"kódování/json"
"log"
"net/http"
)

Instanci struktury můžete zakódovat jako JSON klientovi jako odpověď na základě platnosti požadavku takto:

typ Zpráva strukturovat {
Odezva tětiva`json:"odpověď"`
Popis tětiva`json:"popis"`
}

Funkce handleru by klientovi vrátila úspěšnou zprávu, pokud je požadavek na koncový bod a DOSTAT žádost.

// dockerTestEndpoint zpracovává koncový bod API pro testování připojení Docker
funcdockerTestEndpoint(spisovatel http. ResponseWriter, požadavek *http. Žádost) {

// Nastavte hlavičku odpovědi tak, aby označovala obsah JSON
spisovatel. Header().Set("Typ obsahu,""application/json")

// Pokud je metoda požadavku GET
-li žádost. Metoda == "DOSTAT" {

// Nastavte kód stavu odpovědi na 200 OK
spisovatel. WriteHeader (http. Stav OK)

// Vytvořte strukturu zprávy pro úspěšnou odpověď
zpráva := zpráva{
Odezva: "Úspěšný",
Popis: "Úspěšně jste dosáhli koncového bodu API" +
"Z vašeho kontejneru Docker",
}
// Zakódujte zprávu jako JSON a odešlete ji jako odpověď
chyba := json. NewEncoder (zapisovatel).Encode(&zpráva)
-li chyba!= nula {
vrátit se
}
} jiný {

// Pokud metoda požadavku není GET
// Nastavte kód stavu odpovědi na 400 Bad Request
spisovatel. WriteHeader (http. StatusBadRequest)

// Vytvoří strukturu zprávy pro odpověď na špatný požadavek
zpráva := zpráva{
Odezva: "Špatný požadavek",
Popis: "Úspěšně jste dosáhli koncového bodu API ze svého " +
"Docker Container, ale udělal jsi špatný požadavek",
}

// Zakódujte zprávu jako JSON a odešlete ji jako odpověď
chyba := json. NewEncoder (zapisovatel).Encode(&zpráva)
-li chyba!= nula {
vrátit se
}
}
}

Funkci handleru nastavíte v hlavní funkci s trasou jako /api/docker/go. The dockerTestEndpoint funkce handler ověřuje, že požadavek na handler je požadavek GET. Pokud se jedná o požadavek GET, zakóduje vytvořenou instanci Zpráva struct instance klientovi na základě stavu požadavku.

Zde je návod, jak můžete připojit funkci handleru na trasu a nastavit server tak, aby běžel na portu 8080:

funchlavní() {
// Zaregistrujte funkci obslužné rutiny 'dockerTestEndpoint'
// ke zpracování požadavků na adresu URL "/api/docker/go".
http. HandleFunc("/api/docker/go", dockerTestEndpoint)

// Spusťte HTTP server a poslouchejte příchozí požadavky na portu 8080.
chyba := http. Poslouchejte a servírujte (":8080", nula)
-li chyba!= nula {
log. Fatalln("Došlo k chybě serveru:", chyba)
}
}

The hlavní funkce je vstupní bod serveru, který naslouchá na portu 8080. The HandleFunc metoda připojí cesty k funkci handleru. The ListenAndServe metoda spustí server na zadaném místním hostitelském portu 8080.

Začínáme s kontejnerováním aplikací Go pomocí Dockeru

Po instalaci a nastavení Dockeru budete potřebovat soubor Docker s názvem Dockerfile k vytvoření a vytvoření image Dockeru pro vaši aplikaci Go. Zadáte příkazy pro základní obrázek a příkazy pro zkopírování souborů, přidání pracovního adresáře a spuštění aplikace v Dockerfile.

Spusťte tento příkaz v terminálu svého pracovního prostoru a vytvořte soubor Dockerfile.

klepněte na Dockerfile

Příkazy pro vytvoření obrazu Dockeru určíte v souboru Dockerfile.

Pokud existují nějaké soubory, které chcete oddělit od obrazu Dockeru, můžete použít a .dockerignore soubor. The .dockerignore soubory fungují přesně jako .gitignore soubory.

dotknout se .dockerignore

Dále ve svém Dockerfile určíte příkazy k sestavení, abyste kontejnerizovali své aplikace.

Definování příkazů v Dockerfile

Dockerfiles lze přizpůsobit na základě specifikací vašeho projektu. Definujete příkazy pro sestavení základního obrazu pro sestavení aplikace.

Zde je příklad obsahu souboru Dockerfile, který vytváří webový server výše:

# Použijte základní obrázek Golang
Z golang: nejnovější

# Nastavte pracovní adresář uvnitř kontejneru
WORKDIR /app

# Zkopíruje všechny soubory v místním adresáři do pracovního adresáře v kontejneru
KOPÍROVAT. .

# Stáhněte si závislosti modulu Go
BĚH go mod ke stažení

# Vytvořte aplikaci Go
BĚH jděte sestavit aplikaci -o

# Nastavte vstupní bod pro aplikaci
VSTUPNÍ BOD ["./aplikace"]

Dockerfile používá golang: nejnovější základní obrázek, k sestavení aplikace po nastavení pracovního adresáře /app.

Dockerfile zkopíruje soubory s příponou KOPÍROVAT příkaz a stahuje závislosti s BĚH příkaz.

Soubor určuje operaci sestavení a spuštění s BĚH příkaz a poté nastaví, aby se příkaz spustil, když kontejner začíná s CMD příkaz.

Uložte Dockerfile do stejného adresáře jako váš go.mod a main.go soubory; poté spusťte tento příkaz a vytvořte obraz Dockeru z tohoto souboru Docker:

docker build -t GolangTutorial .

Výše uvedený příkaz vytvoří obrázek Docker se značkou golangtutorial. Kontejner můžete spustit pomocí tohoto příkazu:

docker run -p 8080:8080 golangtutorial

Příkaz mapuje port 8080 z kontejneru na port 8080 na localhost hostitelského počítače. Server běžící v kontejneru Docker si můžete vyžádat z hostitelského počítače.

Zde je výsledek z odeslání požadavku CURL na server, tentokrát běžící na Dockeru:

Docker Compose můžete použít pro organizaci kontejnerů

Docker Compose je nástroj, který můžete použít k orchestraci (práci s mnoha) kontejnery Docker. Docker Compose umožňuje definovat vícekontejnerovou aplikaci v jediném souboru YAML. Celou aplikaci můžete spustit a spravovat jediným příkazem.

Docker Compose můžete použít k nasazení a správě složitých kontejnerizovaných aplikací. Docker Compose zjednodušuje správu pomocí automatizovaných a konzistentních nasazení.