Sužinokite, kaip naudoti „Docker“, kad galėtumėte efektyviai supakuoti ir įdiegti „Go“ programas, kad jos būtų nešiojamos ir lengvai valdomos.

„Docker“ yra populiariausia konteinerių talpinimo technologija dėl savo paprastumo ir naudojimo paprastumo. „Docker“ sumažina perkeliamumo problemų įtampą kuriant ir platinant programinę įrangą. Docker konteinerius galite įdiegti daugeliui debesies paslaugų teikėjų.

„Go“ programų talpinimas naudojant „Docker“ gali padėti užtikrinti nuoseklų ir patikimą diegimą įvairiose aplinkose. Galite įdiegti savo „Go“ programas įvairiose aplinkose, pvz., kūrimo, parengimo ir gamybos. „Docker“ konteineriai yra lengvi ir užima mažiau vietos nei tradicinės virtualios mašinos. Taip galite sutaupyti pinigų prieglobos išlaidoms, be to, tai gali pagreitinti diegimą.

Paprasto žiniatinklio serverio nustatymas Go

„Go“ standartinėje bibliotekoje yra paketai, kurių jums reikės norint nustatyti paprastą žiniatinklio serverį.

Pirma, importuokite http, žurnalas, ir json paketus. Jūs naudosite

instagram viewer
Go's http paketas nustatyti serverį ir GAUTI užklausos galutinis taškas. The žurnalas paketą, skirtą galimų klaidų registravimui jūsų konsolėje. The json paketas, skirtas koduoti struktūrą į JSON API galutiniam taškui.

importuoti (
"kodavimas/json"
"rąstas"
"net/http"
)

Galite užkoduoti struktūros egzempliorių kaip JSON klientui kaip atsakymą pagal užklausos galiojimą taip:

tipo Pranešimas struktūra {
Atsakymas styga`json:"atsakymas"".
apibūdinimas styga`json:"description"'
}

Valdiklio funkcija klientui grąžintų sėkmingą pranešimą, jei užklausa galutiniam taškui yra a GAUTI prašymas.

// dockerTestEndpoint tvarko API galutinį tašką, kad patikrintų Docker ryšį
funcdockerTestEndpoint(rašytojas http. ResponseWriter, užklausa *http. užklausa) {

// Nustatykite atsakymo antraštę, kad nurodytumėte JSON turinį
rašytojas. Header().Set("Turinio tipas,""application/json")

// Jei užklausos metodas yra GET
jeigu prašymas. Metodas == "GAUTI" {

// Nustatykite atsakymo būsenos kodą į 200 OK
rašytojas. WriteHeader (http. BūsenaGerai)

// Sukurkite pranešimo struktūrą, kad atsakymas būtų sėkmingas
pranešimas := Pranešimas{
Atsakymas: "Sėkmingas",
Apibūdinimas: "Jūs sėkmingai pasiekėte API galinį tašką" +
„Iš jūsų doko konteinerio“,
}
// Užkoduokite pranešimą kaip JSON ir išsiųskite kaip atsakymą
klaida := json. NewEncoder (rašytojas).Kodavimas (&pranešimas)
jeigu klysta! = nulis {
grąžinti
}
} Kitas {

// Jei užklausos metodas nėra GET
// Nustatykite atsakymo būsenos kodą į 400 Bad Request
rašytojas. WriteHeader (http. StatusBadRequest)

// Sukurkite pranešimo struktūrą netinkamam užklausos atsakymui
pranešimas := Pranešimas{
Atsakymas: "Bloga užklausa",
Apibūdinimas: „Jūs sėkmingai pasiekėte API galutinį tašką iš savo“ +
„Docker Container, bet jūs pateikėte blogą užklausą“,
}

// Užkoduokite pranešimą kaip JSON ir išsiųskite kaip atsakymą
klaida := json. NewEncoder (rašytojas).Kodavimas (&pranešimas)
jeigu klysta! = nulis {
grąžinti
}
}
}

Prižiūrėtojo funkciją nustatote pagrindinėje funkcijoje su maršrutu kaip /api/docker/go. The dockerTestEndpoint tvarkyklės funkcija patvirtina, kad užklausa tvarkytojui yra GET užklausa. Jei tai GET užklausa, ji užkoduoja egzempliorių Pranešimas struct egzempliorių klientui pagal užklausos būseną.

Štai kaip maršrute galite prijungti tvarkyklės funkciją ir nustatyti, kad serveris veiktų per prievadą 8080:

funcpagrindinis() {
// Užregistruokite tvarkyklės funkciją „dockerTestEndpoint“
// tvarkyti URL „/api/docker/go“ užklausas.
http. HandleFunc(„/api/docker/go“, dockerTestEndpoint)

// Paleiskite HTTP serverį ir klausykite gaunamų užklausų per 8080 prievadą.
klaida := http. ListenAndServe(":8080", nulis)
jeigu klysta! = nulis {
žurnalas. Fatalln („Serveryje įvyko klaida:“, klaida)
}
}

The pagrindinis funkcija yra serverio įėjimo taškas, kuris klausosi prievado 8080. The HandleFunc metodas sujungia maršrutus su tvarkytojo funkcija. The KlausykIr Tarnaukite metodas paleidžia serverį nurodytame vietiniame prieglobos prievade 8080.

Darbo pradžia Savo „Go“ programų talpinimas naudojant „Docker“.

Įdiegę ir nustatę „Docker“, jums reikės „Docker“ failo, pavadinto „Dockerfile“, kad sukurtumėte ir sukurtumėte „Go“ programos „Docker“ vaizdą. Nurodysite komandas pagrindiniam vaizdui ir komandas, skirtas kopijuoti failus, pridėti darbo katalogą ir paleisti programą Dockerfile.

Paleiskite šią komandą savo darbo srities terminale, kad sukurtumėte Dockerfile.

palieskite Dockerfile

Nurodysite komandas, skirtas „Docker“ atvaizdui kurti „Dockerfile“.

Jei yra failų, kuriuos norite atskirti nuo „Docker“ vaizdo, galite naudoti a .dockeris ignoruoti failą. The .dockeris ignoruoti failai veikia lygiai taip pat .gitignore failus.

palieskite .dockerignore

Tada savo „Dockerfile“ nurodysite kūrimo komandas, kad galėtumėte sudėti programas.

Komandų apibrėžimas Docker faile

„Docker“ failus galima tinkinti pagal jūsų projekto specifikacijas. Apibrėžsite komandas, kad sukurtumėte pagrindinį programos kūrimo vaizdą.

Štai „Dockerfile“, kuri sukuria aukščiau esantį žiniatinklio serverį, turinio pavyzdys:

# Naudokite pagrindinį Golango vaizdą
NUO golang: naujausias

# Nustatykite darbo katalogą konteinerio viduje
DARBO VADOVAS /app

# Nukopijuoja visus vietinio katalogo failus į konteinerio darbinį katalogą
KOPIJUOT. .

# Atsisiųskite „Go“ modulio priklausomybes
BĖGTI go mod atsisiųsti

# Sukurkite programą „Go“.
BĖGTI eik sukurti -o programą

# Nustatykite programos įėjimo tašką
ĮEJIMAS ["./app"]

Dockerfile naudoja golang: naujausias bazinis vaizdas, kad sukurtumėte programą nustačius darbo katalogą į /app.

„Dockerfile“ nukopijuoja failus su KOPIJUOT komandą ir atsisiunčia priklausomybes su BĖGTI komandą.

Failas nurodo kūrimo ir vykdymo operaciją su BĖGTI komandą, tada nustato komandą, kad ji būtų paleista, kai konteineris paleidžiamas su CMD komandą.

Išsaugokite „Dockerfile“ tame pačiame kataloge kaip ir jūsų go.mod ir pagrindinis.go failai; tada paleiskite šią komandą, kad sukurtumėte „Docker“ vaizdą iš šio „Dockerfile“:

docker build -t Golang Tutorial .

Aukščiau pateikta komanda sukurs „Docker“ vaizdą su žyma golangtutorial. Galite paleisti konteinerį naudodami šią komandą:

docker run -p 8080:8080 golangtutorial

Komanda susieja 8080 prievadą iš konteinerio į prievadą 8080 pagrindinio kompiuterio vietiniame priegloboje. Galite pateikti užklausą dėl serverio, veikiančio Docker konteineryje, iš pagrindinio kompiuterio.

Štai rezultatas iš CURL užklausos siuntimas serveriui, šį kartą veikia Docker:

Konteinerių orkestravimui galite naudoti „Docker Compose“.

„Docker Compose“ yra įrankis, kurį galite naudoti norėdami orkestruoti (dirbti su daugeliu) „Docker“ konteinerių. „Docker Compose“ leidžia apibrėžti kelių konteinerių programą viename YAML faile. Galite paleisti ir valdyti visą programą naudodami vieną komandą.

Galite naudoti „Docker Compose“ diegdami ir tvarkydami sudėtingas konteinerines programas. „Docker Compose“ supaprastina valdymą automatizuotu ir nuosekliu diegimu.