Uzziniet, kā izmantot Docker, lai efektīvi iepakotu un izvietotu savas Go lietojumprogrammas, padarot tās pārnēsājamas un viegli pārvaldāmas.

Docker ir vispopulārākā konteinerizācijas tehnoloģija tās vienkāršības un lietošanas vienkāršības dēļ. Docker mazina pārnēsājamības problēmu radīto stresu programmatūras izstrādē un izplatīšanā. Docker konteinerus varat izvietot lielākajā daļā mākoņpakalpojumu sniedzēju.

Go lietotņu ievietošana konteineros ar Docker var palīdzēt nodrošināt konsekventu un uzticamu izvietošanu dažādās vidēs. Varat izvietot savas Go lietotnes dažādās vidēs, piemēram, izstrādes, iestudēšanas un ražošanas vidēs. Docker konteineri ir viegli un aizņem mazāk vietas nekā tradicionālās virtuālās mašīnas. Tas var ietaupīt naudu par mitināšanas izmaksām, kā arī paātrināt izvietošanu.

Vienkārša tīmekļa servera iestatīšana programmā Go

Go standarta bibliotēkā ir pakotnes, kas nepieciešamas, lai iestatītu vienkāršu tīmekļa serveri.

Pirmkārt, importējiet http, žurnāls, un json iepakojumiem. Jūs izmantosit

instagram viewer
Go's http pakotne lai iestatītu serveri un GŪT pieprasījuma galapunkts. The žurnāls pakotne iespējamo kļūdu reģistrēšanai jūsu konsolē. The json pakotne struktūras kodēšanai uz JSON API galapunktam.

imports (
"kodējums/json"
"baļķis"
"net/http"
)

Struktūras gadījumu varat kodēt kā JSON klientam kā atbildi, pamatojoties uz pieprasījuma derīgumu, šādi:

veids Ziņojums struktūra {
Atbilde virkne`json:"atbilde"`
Apraksts virkne`json:"apraksts"`
}

Apdarinātāja funkcija klientam atgrieztu veiksmīgu ziņojumu, ja galapunkta pieprasījums ir a GŪT pieprasījumu.

// dockerTestEndpoint apstrādā API galapunktu Docker savienojamības pārbaudei
funcdockerTestEndpoint(rakstnieks http. ResponseWriter, pieprasiet *http. Pieprasīt) {

// Iestatiet atbildes galveni, lai norādītu JSON saturu
rakstnieks. Header().Set("Satura veids""aplikācija/json")

// Ja pieprasījuma metode ir GET
ja pieprasījumu. Metode == "GŪT" {

// Iestatiet atbildes statusa kodu uz 200 OK
rakstnieks. WriteHeader (http. Statuss OK)

// Izveidojiet ziņojuma struktūru veiksmīgai atbildei
ziņa := Ziņa{
Atbilde: "Veiksmīgi",
Apraksts: "Jūs esat veiksmīgi sasniedzis API galapunktu" +
“No jūsu Docker konteinera”,
}
// Kodējiet ziņojumu kā JSON un nosūtiet to kā atbildi
kļūda := json. NewEncoder (rakstītājs). Kodēt (&ziņojums)
ja kļūda! = nulle {
atgriezties
}
} cits {

// Ja pieprasījuma metode nav GET
// Iestatiet atbildes statusa kodu uz 400 Bad Request
rakstnieks. WriteHeader (http. StatusBadRequest)

// Izveidojiet ziņojuma struktūru sliktai pieprasījuma atbildei
ziņa := Ziņa{
Atbilde: "Slikts pieprasījums",
Apraksts: "Jūs esat veiksmīgi sasniedzis API galapunktu no sava" +
"Dokera konteiners, bet jūs iesniedzāt sliktu pieprasījumu",
}

// Kodējiet ziņojumu kā JSON un nosūtiet to kā atbildi
kļūda := json. NewEncoder (rakstītājs). Kodēt (&ziņojums)
ja kļūda! = nulle {
atgriezties
}
}
}

Jūs iestatāt apdarinātāja funkciju galvenajā funkcijā ar maršrutu kā /api/docker/go. The dockerTestEndpoint apdarinātāja funkcija apstiprina, ka pieprasījums apstrādātājam ir GET pieprasījums. Ja tas ir GET pieprasījums, tas kodē instantiāciju Ziņojums struct instance klientam, pamatojoties uz pieprasījuma statusu.

Lūk, kā maršrutā var uzstādīt apdarinātāja funkciju un iestatīt serveri darbam portā 8080:

funcgalvenais() {
// Reģistrēt apdarinātāja funkciju "dockerTestEndpoint"
// lai apstrādātu pieprasījumus par URL "/api/docker/go".
http. HandleFunc("/api/docker/go", dockerTestEndpoint)

// Sāciet HTTP serveri un klausieties ienākošos pieprasījumus portā 8080.
kļūda := http. ListenAndServe(":8080", nulle)
ja kļūda! = nulle {
žurnāls. Fatalln("Serverī radās kļūda:", kļūda)
}
}

The galvenais funkcija ir servera ieejas punkts, kas klausās portā 8080. The HandleFunc metode pievieno maršrutus apdarinātāja funkcijai. The Klausieties un kalpojiet metode startē serveri norādītajā vietējā resursdatora portā 8080.

Darba sākšana Savu Go lietotņu ievietošana konteineros, izmantojot Docker

Pēc Docker instalēšanas un iestatīšanas jums būs nepieciešams Docker fails ar nosaukumu Dockerfile, lai izveidotu un izveidotu Docker attēlu savai Go lietotnei. Jūs norādīsit komandas pamata attēlam un komandas, lai kopētu failus, pievienotu darba direktoriju un palaistu programmu Dockerfile.

Palaidiet šo komandu darbvietas terminālī, lai izveidotu Dockerfile.

pieskarieties Dockerfile

Docker failā jūs norādīsit komandas Docker attēla izveidei.

Ja ir kādi faili, kurus vēlaties atdalīt no Docker attēla, varat izmantot a .docker ignorēt failu. The .docker ignorēt faili darbojas tieši tāpat .gitignore failus.

pieskarties .dockerignore

Pēc tam savā Dockerfile norādīsiet veidošanas komandas, lai konteinerizētu savas lietotnes.

Komandu definēšana Docker failā

Docker faili ir pielāgojami, pamatojoties uz jūsu projekta specifikācijām. Jūs definēsit komandas, lai izveidotu bāzes attēlu lietojumprogrammas izveidei.

Šis ir Docker faila satura piemērs, kas veido iepriekš minēto tīmekļa serveri:

# Izmantojiet Golang bāzes attēlu
NO golang: jaunākais

# Iestatiet darba direktoriju konteinera iekšpusē
DARBA DIREKTĪVĀ /app

# Kopē visus lokālajā direktorijā esošos failus konteinera darba direktorijā
KOPĒT. .

# Lejupielādējiet Go moduļa atkarības
RUN lejupielādējiet mod

# Izveidojiet lietojumprogrammu Go
RUN dodieties izveidot -o lietotni

# Iestatiet lietojumprogrammas ievades punktu
IEEJAS PUNKTS ["./app"]

Dockerfile izmanto golang: jaunākais bāzes attēls, lai izveidotu lietotni pēc darba direktorija iestatīšanas uz /app.

Dockerfile kopē failus ar KOPĒT komandu un lejupielādē atkarības ar RUN komandu.

Fails norāda izveides un palaišanas darbību ar RUN komandu, pēc tam iestata komandu palaist, kad konteiners sākas ar CMD komandu.

Saglabājiet Dockerfile tajā pašā direktorijā kā jūsu go.mod un galvenais.go faili; pēc tam palaidiet šo komandu, lai izveidotu Docker attēlu no šī Docker faila:

docker build -t Golang Apmācība .

Iepriekš minētā komanda izveidos Docker attēlu ar tagu golangtutorial. Jūs varat palaist konteineru ar šo komandu:

docker run -p 8080:8080 golangtutorial

Komanda kartē portu 8080 no konteinera uz portu 8080 resursdatora datora lokālajā resursdatorā. Varat pieprasīt serveri, kas darbojas Docker konteinerā no saimniekdatora.

Šeit ir rezultāts no nosūtot CURL pieprasījumu serverim, šoreiz darbojas Docker:

Varat izmantot Docker Compose konteineru orķestrēšanai

Docker Compose ir rīks, ko varat izmantot, lai orķestrētu (strādātu ar daudziem) Docker konteineriem. Docker Compose ļauj definēt vairāku konteineru lietojumprogrammu vienā YAML failā. Varat palaist un pārvaldīt visu lietojumprogrammu ar vienu komandu.

Varat izmantot Docker Compose, lai izvietotu un pārvaldītu sarežģītas konteinerizētas lietojumprogrammas. Docker Compose vienkāršo pārvaldību ar automatizētu un konsekventu izvietošanu.