Naučite se uporabljati Docker za učinkovito pakiranje in uvajanje aplikacij Go, tako da bodo prenosljive in enostavne za upravljanje.

Docker je zaradi svoje preprostosti in enostavne uporabe najbolj priljubljena tehnologija kontejnerizacije. Docker razbremeni težave s prenosljivostjo pri razvoju in distribuciji programske opreme. Svoje docker vsebnike lahko namestite pri večini ponudnikov storitev v oblaku.

Kontejneriranje vaših aplikacij Go z Dockerjem vam lahko pomaga zagotoviti dosledno in zanesljivo uvajanje v različnih okoljih. Svoje aplikacije Go lahko uvedete v različna okolja, kot so razvoj, uprizarjanje in produkcija. Docker kontejnerji so lahki in zavzamejo manj prostora kot tradicionalni virtualni stroji. To vam lahko prihrani denar pri stroških gostovanja in lahko tudi pospeši vaše uvedbe.

Nastavitev preprostega spletnega strežnika v Go

Standardna knjižnica Go vsebuje pakete, ki jih boste potrebovali za nastavitev preprostega spletnega strežnika.

Najprej uvozite http, dnevnik, in

instagram viewer
json paketi. Uporabili boste Gojev http paket za nastavitev strežnika in DOBITI zahtevati končno točko. The dnevnik paket za beleženje možnih napak v vašo konzolo. The json za kodiranje strukture v JSON za končno točko API.

uvoz (
"kodiranje/json"
"dnevnik"
"net/http"
)

Primerek strukture lahko odjemalcu kodirate kot JSON kot odgovor na podlagi veljavnosti zahteve, kot je:

vrsta Sporočilo struct {
Odziv vrvica`json:"odziv"`
Opis vrvica`json:"opis"`
}

Funkcija obravnave bi odjemalcu vrnila uspešno sporočilo, če je zahteva do končne točke a DOBITI prošnja.

// dockerTestEndpoint obravnava končno točko API za testiranje povezljivosti Docker
funkdockerTestEndpoint(pisatelj http. ResponseWriter, zahtevajte *http. Prošnja) {

// Nastavi glavo odgovora tako, da označuje vsebino JSON
pisatelj. Header().Set("Vrsta vsebine,""aplikacija/json")

// Če je metoda zahteve GET
če prošnja. Metoda == "DOBITI" {

// Nastavite statusno kodo odgovora na 200 OK
pisatelj. WriteHeader (http. stanje v redu)

// Ustvarite strukturo sporočila za uspešen odgovor
sporočilo := sporočilo{
odgovor: "Uspešno",
Opis: "Uspešno ste dosegli končno točko API-ja" +
"Iz vašega vsebnika Docker",
}
// Kodirajte sporočilo kot JSON in ga pošljite kot odgovor
napaka := json. NewEncoder (pisovalec).Encode(&message)
če napaka!= nič {
vrnitev
}
} drugače {

// Če metoda zahteve ni GET
// Nastavite statusno kodo odgovora na 400 Slaba zahteva
pisatelj. WriteHeader (http. StatusBadRequest)

// Ustvarite strukturo sporočila za slab odgovor na zahtevo
sporočilo := sporočilo{
odgovor: "Slaba prošnja",
Opis: "Uspešno ste dosegli končno točko API iz vašega " +
"Docker Container, vendar ste podali slabo zahtevo",
}

// Kodirajte sporočilo kot JSON in ga pošljite kot odgovor
napaka := json. NewEncoder (pisovalec).Encode(&message)
če napaka!= nič {
vrnitev
}
}
}

Funkcijo upravljalnika nastavite v glavni funkciji s potjo kot /api/docker/go. The dockerTestEndpoint funkcija obdelovalca potrdi, da je zahteva za obdelovalnik zahteva GET. Če gre za zahtevo GET, kodira primerek Sporočilo primerek strukture odjemalcu glede na status zahteve.

Tukaj je opisano, kako lahko namestite funkcijo upravljalnika na poti in nastavite strežnik za delovanje na vratih 8080:

funkglavni() {
// Registracija funkcije obdelovalca 'dockerTestEndpoint'
// za obdelavo zahtev za URL "/api/docker/go".
http. HandleFunc("/api/docker/go", dockerTestEndpoint)

// Zaženite strežnik HTTP in poslušajte dohodne zahteve na vratih 8080.
napaka := http. ListenAndServe(":8080", nič)
če napaka!= nič {
dnevnik. Fatalln("Prišlo je do napake na strežniku:", napaka)
}
}

The glavni funkcija je vstopna točka strežnika, ki posluša na vratih 8080. The HandleFunc metoda namesti poti na funkcijo upravljalnika. The ListenAndServe metoda zažene strežnik na podanih vratih lokalnega gostitelja 8080.

Kako začeti Kontejnerizirati svoje aplikacije Go z Dockerjem

Po namestitvi in ​​nastavitvi Dockerja boste potrebovali datoteko Docker z imenom Dockerfile, da ustvarite in zgradite sliko Dockerja za vašo aplikacijo Go. Podali boste ukaze za osnovno sliko in ukaze za kopiranje datotek, dodajanje delovnega imenika in zagon aplikacije v datoteki Dockerfile.

Zaženite ta ukaz v terminalu vašega delovnega prostora, da ustvarite Dockerfile.

dotaknite se Dockerfile

Ukaze za gradnjo vaše slike Docker boste določili v datoteki Docker.

Če obstajajo datoteke, ki jih želite ločiti od slike Docker, lahko uporabite a .dockerignore mapa. The .dockerignore datoteke delujejo točno tako .gitignore datoteke.

dotik .dockerignore

Nato boste v datoteki Docker podali ukaze za gradnjo, da svoje aplikacije pospravite v vsebnike.

Definiranje ukazov v datoteki Docker

Datoteke Docker so prilagodljive glede na specifikacije vašega projekta. Določili boste ukaze za izdelavo osnovne slike za izdelavo aplikacije.

Tukaj je primer vsebine datoteke Dockerfile, ki zgradi zgornji spletni strežnik:

# Uporabite osnovno sliko Golang
OD golang: najnovejše

# Nastavite delovni imenik znotraj vsebnika
DELOVNI DIR /app

# Kopira vse datoteke v lokalnem imeniku v delovni imenik v vsebniku
KOPIRATI. .

# Prenesite odvisnosti modula Go
TECI go mod download

# Zgradite aplikacijo Go
TECI go build -o app

# Nastavite vstopno točko za aplikacijo
VSTOPNA TOČKA ["./aplikacija"]

Dockerfile uporablja golang: najnovejše osnovna slika, za izdelavo aplikacije po nastavitvi delovnega imenika /app.

Dockerfile kopira datoteke z KOPIRATI ukaz in prenosi odvisnosti z TECI ukaz.

Datoteka določa operacijo gradnje in izvajanja z TECI nato nastavi ukaz, da se zažene, ko se vsebnik začne z CMD ukaz.

Shranite Dockerfile v isti imenik kot vaš go.mod in main.go datoteke; nato zaženite ta ukaz, da zgradite sliko Docker iz te datoteke Docker:

docker build -t GolangTutorial.

Zgornji ukaz bo ustvaril sliko Docker z oznako golangtutorial. Vsebnik lahko zaženete s tem ukazom:

docker run -p 8080:8080 golangtutorial

Ukaz preslika vrata 8080 iz vsebnika v vrata 8080 na lokalnem gostitelju gostiteljskega računalnika. Od gostiteljskega računalnika lahko zahtevate, da se strežnik izvaja v vsebniku Docker.

Tukaj je rezultat iz pošiljanje zahteve CURL strežniku, ki se tokrat izvaja na Dockerju:

Docker Compose lahko uporabite za orkestracijo vsebnika

Docker Compose je orodje, ki ga lahko uporabite za orkestriranje (delo z mnogimi) vsebniki Docker. Docker Compose vam omogoča, da definirate aplikacijo z več vsebniki v eni datoteki YAML. Celotno aplikacijo lahko zaženete in upravljate z enim samim ukazom.

Docker Compose lahko uporabite za uvajanje in upravljanje kompleksnih aplikacij v vsebnikih. Docker Compose poenostavlja upravljanje z avtomatiziranimi in doslednimi uvajanji.