Siit saate teada, kuidas kasutada Dockerit oma Go rakenduste tõhusaks pakkimiseks ja juurutamiseks, muutes need kaasaskantavaks ja hõlpsasti hallatavaks.
Docker on oma lihtsuse ja kasutusmugavuse tõttu kõige populaarsem konteinertehnoloogia. Docker leevendab tarkvaraarenduse ja levitamise kaasaskantavusprobleemidest tulenevat stressi. Saate juurutada oma dokkimiskonteinerid enamiku pilveteenuse pakkujate jaoks.
Go rakenduste mahutamine Dockeriga aitab teil tagada järjepideva ja usaldusväärse juurutamise erinevates keskkondades. Saate oma Go rakendusi juurutada erinevatesse keskkondadesse, nagu arendus, lavastus ja tootmine. Dockeri konteinerid on kerged ja võtavad vähem ruumi kui traditsioonilised virtuaalmasinad. See võib säästa raha hostimiskuludelt ja kiirendada juurutamist.
Lihtsa veebiserveri seadistamine Go's
Go standardteek sisaldab pakette, mida vajate lihtsa veebiserveri seadistamiseks.
Esiteks importige http, logija json paketid. Sa kasutad Go's http pakett serveri seadistamiseks ja
SAADA päringu lõpp-punkt. The logi pakett võimalike vigade konsooli logimiseks. The json pakett struktuuri kodeerimiseks JSON-iks API lõpp-punkti jaoks.importida (
"kodeering/json"
"logi"
"net/http"
)
Struktuuri eksemplari saate kodeerida JSON-vormingus kliendile vastusena päringu kehtivuse alusel järgmiselt:
tüüp Sõnum struktuur {
Vastus string`json:"vastus"`
Kirjeldus string`json:"kirjeldus"`
}
Töötleja funktsioon tagastaks kliendile eduka sõnumi, kui lõpp-punkti päring on a SAADA nõuda.
// dockerTestEndpoint haldab API lõpp-punkti Dockeri ühenduvuse testimiseks
funcdockerTestEndpoint(kirjanik http. ResponseWriter, päring *http. taotlus) {// Määrake vastuse päis JSON-i sisu näitamiseks
kirjanik. Header().Set("Sisu tüüp,""rakendus/json")// Kui päringu meetod on GET
kui nõuda. Meetod == "HANGI" {// Määrake vastuse olekukoodiks 200 OK
kirjanik. WriteHeader (http. Olek OK)// Looge edukaks vastuseks sõnumistruktuur
sõnum := sõnum{
Vastus: "Edukad",
Kirjeldus: "Olete edukalt tabanud API lõpp-punkti" +
"Teie Dockeri konteinerist",
}
// Kodeerige sõnum JSON-vormingus ja saatke see vastusena
eksitus := json. NewEncoder (kirjutaja). Kodeeri (&sõnum)
kui eks!= null {
tagasi
}
} muidu {// Kui päringu meetod ei ole GET
// Määrake vastuse olekukoodiks 400 Bad Request
kirjanik. WriteHeader (http. StatusBadRequest)// Looge halva päringu vastuse jaoks sõnumistruktuur
sõnum := sõnum{
Vastus: "Halb taotlus",
Kirjeldus: "Olete edukalt tabanud API lõpp-punkti oma" +
"Docker Container, aga sa esitasid halva taotluse",
}
// Kodeerige sõnum JSON-vormingus ja saatke see vastusena
eksitus := json. NewEncoder (kirjutaja). Kodeeri (&sõnum)
kui eks!= null {
tagasi
}
}
}
Käitleja funktsiooni seadistate põhifunktsioonis marsruudiga as /api/docker/go. The dockerTestEndpoint funktsioon käitleja kinnitab, et töötlejale saadetud päring on GET-päring. Kui see on GET-päring, kodeerib see instantseeritud päringu Sõnum struct eksemplar kliendile päringu oleku alusel.
Siit saate teada, kuidas saate halduri funktsiooni marsruudile ühendada ja serveri pordis töötama seadistada 8080:
funcpeamine() {
// Registreerige töötleja funktsioon 'dockerTestEndpoint'
// URL-i „/api/docker/go” päringute käsitlemiseks.
http. HandleFunc("/api/docker/go", dockerTestEndpoint)
// Käivitage HTTP-server ja kuulake sissetulevaid päringuid pordis 8080.
viga := http. ListenAndServe(":8080", null)
kui eks!= null {
logi. Fatalln("Serveris on viga:", eksitus)
}
}
The peamine funktsioon on serveri sisenemispunkt, mis kuulab pordi kaudu 8080. The HandleFunc meetod ühendab marsruudid käitleja funktsioonile. The Kuula ja teeninda meetod käivitab serveri määratud kohalikus hostipordis 8080.
Alustamine Go-rakenduste mahutamine Dockeriga
Pärast Dockeri installimist ja seadistamist vajate oma Go rakenduse jaoks Dockeri kujutise loomiseks ja ehitamiseks Dockeri faili nimega Dockerfile. Saate määrata põhipildi käsud ja käsud failide kopeerimiseks, töökataloogi lisamiseks ja rakenduse käivitamiseks Dockerfile'is.
Käivitage see käsk oma tööruumi terminalis, et luua Dockerfile.
puudutage Dockerfile
Saate määrata käsud Dockeri pildi loomiseks Dockerfile'is.
Kui soovite Dockeri pildist eraldada faile, võite kasutada a .dockeri ignoreerida faili. The .dockeri ignoreerida failid töötavad täpselt nii .gitignoreeri failid.
puudutage .dockeri ignoreeri
Järgmisena määrate oma Dockerfile'is ehituskäsud rakenduste konteinerisse paigutamiseks.
Käskude määratlemine Dockeri failis
Dockeri faile saab kohandada vastavalt teie projekti spetsifikatsioonidele. Saate määratleda käsud, et luua rakenduse loomiseks põhikujutis.
Siin on näide ülaltoodud veebiserverit loova Dockerfile'i sisust:
# Kasutage Golangi baaspilti
FROM golang: uusim# Määrake konteineri sees töökataloog
TÖÖDIREKTOR /app# Kopeerib kõik kohalikus kataloogis olevad failid konteineri töökataloogi
KOPERI. .# Laadige alla Go mooduli sõltuvused
JOOKSE laadige mod alla# Looge rakendus Go
JOOKSE mine ehita -o rakendus
# Määrake rakenduse sisenemispunkt
SISENEMISPUNKT ["./app"]
Dockerfile kasutab golang: uusim baaspilt, et luua rakendus pärast töökataloogi seadistamist /app.
Dockerfile kopeerib failid koos KOPERI käsk ja laadib alla sõltuvused rakendusega JOOKSE käsk.
Fail määrab ehitamise ja käivitamise toimingu koos JOOKSE käsk, seejärel määrab käsu käivituma, kui konteiner algab tähega CMD käsk.
Salvestage Dockerfile omaga samasse kataloogi go.mod ja main.go failid; seejärel käivitage see käsk, et luua sellest Dockeri failist Dockeri pilt:
docker build -t Golangi õpetus .
Ülaltoodud käsk loob Dockeri pildi sildiga golangutorial. Konteinerit saate käivitada selle käsuga:
docker run -p 8080:8080 golangutorial
Käsk kaardistab pordi 8080 konteinerist hostmasina kohaliku hosti porti 8080. Saate taotleda hostmasinalt Dockeri konteineris töötavat serverit.
Siin on tulemus CURL-i päringu saatmine serverisse, seekord töötab Dockeris:
Saate kasutada Docker Compose'i konteinerite orkestreerimiseks
Docker Compose on tööriist, mida saate kasutada Dockeri konteinerite orkestreerimiseks (töötamiseks paljudega). Docker Compose võimaldab teil määratleda mitmest konteinerist koosneva rakenduse ühes YAML-failis. Saate käivitada ja hallata kogu rakendust ühe käsuga.
Docker Compose'i saate kasutada keerukate konteinerrakenduste juurutamiseks ja haldamiseks. Docker Compose lihtsustab haldamist automatiseeritud ja järjepidevate juurutustega.