Go on avatud lähtekoodiga, staatiliselt trükitud ja kompileeritud programmeerimiskeel, mis on tuntud oma võime poolest hõlbustada lihtsa, usaldusväärse ja väga tõhusa tarkvara arendamist. See leiab utiliidi mitmesuguste rakenduste, sealhulgas veebirakenduste, pilvepõhiste lahenduste, käsurea liideste (CLI-de) loomiseks, ja intrigeerivalt on isegi Docker ise loodud Go abil.
Meie puhul ehitame Go-s lihtsa HTTP-serveri, mis võimaldab meil näidata, kuidas rakendust lihtsate sammudega luua ja dokkida.
Nõuded:
Selle õpetuse järgimiseks vajate järgmisi tööriistu.
- Installitud Go kompilaator (vajalik versioon 1.21 ja uuem)
- Dockeri mootori käivitamine hostmasinas
- IDE või tekstiredaktor rakenduse Go redigeerimiseks. Soovitame kasutada Visual Studio või Vimi
- Käsurea tõlk, nagu Bash, ZSH, PowerShell jne.
Kui etteantud nõuded on täidetud, jätkame ja õpime rakendust koostama.
Rakenduse loomine
Järgmine samm on meie rakenduse loomine. Meie puhul ehitame lihtsa HTTP-serveri, mis vastab lihtsa sõnumiga.
Alustage Go-projekti salvestamiseks kataloogi loomisega. Võite anda mis tahes sobiva nime.
$ mkdir go_serverLiikuge kataloogi ja looge lähtekoodi salvestamiseks uus fail. Meie puhul nimetame faili main.go, mis näitab, et fail on Go lähtekood.
$ puudutada main.go
Lõpuks redigeerige faili ja lisage rakendusele lähtekood, nagu on näidatud järgmises:
pakett peamineimportida (
'fmt'
'net/http'
)
func main ( ) {
// saabuvate päringute käsitlemine
http.HandleFunc ( '/' , func ( sisse http.ResponseWriter, r * http.Taotlus ) {
// Kirjutage kliendile vastus
fmt.Fprintf ( sisse , 'Dockerist (:' )
} )
// Käivitage HTTP-server pordis 8080
fmt.Println ( 'Server töötab :8080' )
http.ListenAndServe ( ':8080' , null )
}
Eelmine rakendus loob põhilise HTTP-serveri, mis seostub pordiga 8080. Server vastab põhisõnumiga, nagu eelnevalt määratletud.
Rakenduse testimine
Enne rakenduse dokkimist veenduge, et rakendus töötab korralikult. Käivitage järgmine käsk:
$ mine jooksma main.goEelmine käsk käivitab rakenduse ja tagastab teate järgmiselt:
Server töötab: 8080Järgmisena saate HTTP-serveri testimiseks käivitada käsu 'curl' järgmiselt:
$ lokk http: // localhost: 8080 /Eelmine käsk peaks tagastama sõnumi järgmiselt:
Dockerist ( : %Nüüd saame jätkata ja dokkida eelmise rakenduse, nagu on määratletud järgmistes sammudes.
Rakenduse konteinerisse paigutamine
Järgmisena arutatakse, kuidas rakenduse jaoks konteinerit ehitada. Alustame Dockerfile'i loomisega projekti kataloogis.
$ cd go_serverLooge fail nimega Dockerfile ilma laiendita ja redigeerige faili tekstiredaktoriga. See fail võimaldab meil määratleda kõik meie rakendusele esitatavad nõuded järgmiselt.
$ puudutada Dockerfile$ sest Dockerfile
Lisage konfiguratsioon järgmiselt:
golangist: 1.21TÖÖDIREKTOR / rakendus
KOPERI . .
RUN go build main.go -O peamine .
AVALDA 8080
CMD [ './main' ]
Eelmises Dockerfile'is määratleme rakenduse eelmised toimingud.
- Määrake põhipildiks ametlik Golangi kujutise versioon 1.21.
- Seadistage konteineris olev töökataloog väärtuseks „/app”.
- Kopeerime kogu projekti kataloogi konteinerisse.
- Ehitage rakendus Go konteinerisse.
- Sissetuleva HTTP-liikluse lubamiseks avage port 8080.
- Määrake käsk rakenduse Go käivitamiseks.
Dockeri kujutise loomine
Rakenduse pildi koostamiseks avage terminal ja navigeerige projektikataloogi. Järgmisena käivitage pildi koostamiseks järgmine käsk:
$ sudo doki ehitamine -t go_server_doccker .Asendage go_server_docker nimega, millele soovite rakenduse pildile määrata.
Pärast Dockeri kujutise edukat koostamist saate käivitada sellel pildil põhineva konteineri järgmise käsuga:
$ dokijooks -lk 8080 : 8080 go_server_docckerEelmine käsk peaks vastama hostmasina pordi 8080 konteineri sees olevale pordile 8080.
Konteineri testimiseks käivitage järgmine käsk:
$ lokk http: // localhost: 8080See peaks printima rakenduses määratletud sõnumi.
Järeldus
Selles õpetuses õppisime põhilist Go rakendust looma. Samuti õppisime, kuidas rakendust konteinerisse paigutada, määratledes Dockerfile'is nõuded, ehitades konteinerist kujutise ja käivitades konteineri pildi põhjal.