Aflați cum să utilizați Docker pentru a împacheta și a implementa aplicațiile Go în mod eficient, făcându-le portabile și ușor de gestionat.
Docker este cea mai populară tehnologie de containerizare datorită simplității și ușurinței de utilizare. Docker scutește stresul problemelor de portabilitate în dezvoltarea și distribuția de software. Vă puteți implementa containerele docker la majoritatea furnizorilor de servicii cloud.
Containerizarea aplicațiilor Go cu Docker vă poate ajuta să asigurați o implementare consistentă și fiabilă în diferite medii. Puteți implementa aplicațiile Go în diferite medii, cum ar fi dezvoltarea, punerea în scenă și producția. Containerele Docker sunt ușoare și ocupă mai puțin spațiu decât mașinile virtuale tradiționale. Acest lucru vă poate economisi bani pe costurile de găzduire și, de asemenea, vă poate face implementările mai rapide.
Configurarea unui server web simplu în Go
Biblioteca standard Go conține pachetele de care veți avea nevoie pentru a configura un server web simplu.
În primul rând, importați http, Buturuga, și json pachete. Vei folosi Pachetul http al Go pentru a configura serverul și OBȚINE punctul final de cerere. The Buturuga pachet pentru înregistrarea posibilelor erori pe consolă. The Pachetul json pentru codificarea unei structuri în JSON pentru punctul final API.
import (
"encoding/json"
"Buturuga"
"net/http"
)
Puteți codifica o instanță struct ca JSON pentru client ca răspuns pe baza validității cererii, astfel:
tip Mesaj struct {
Raspuns şir`json:"răspuns"`
Descriere şir`json:"descriere"`
}
Funcția de gestionare ar returna un mesaj de succes clientului dacă cererea către punctul final este a OBȚINE cerere.
// dockerTestEndpoint se ocupă de punctul final API pentru testarea conectivității Docker
funcdockerTestEndpoint(scriitor http. ResponseWriter, solicitați *http. Cerere) {// Setați antetul răspunsului pentru a indica conținutul JSON
scriitor. Antet().Set("Tipul de conținut,""aplicație/json")// Dacă metoda de solicitare este GET
dacă cerere. Metoda == "OBȚINE" {// Setați codul de stare a răspunsului la 200 OK
scriitor. WriteHeader (http. StareOK)// Creați o structură de mesaj pentru un răspuns de succes
mesaj := Mesaj{
Raspuns: "De succes",
Descriere: „Ați atins cu succes punctul final API” +
„Din containerul Docker”,
}
// Codifică mesajul ca JSON și trimite-l ca răspuns
err := json. NewEncoder (scriitor).Codificare(&mesaj)
dacă greș!= zero {
întoarcere
}
} altfel {// Dacă metoda de solicitare nu este GET
// Setați codul de stare a răspunsului la 400 Solicitare greșită
scriitor. WriteHeader (http. StatusBadRequest)// Creați o structură de mesaj pentru un răspuns greșit la cerere
mesaj := Mesaj{
Raspuns: "Cerere greşită",
Descriere: „Ați atins cu succes punctul final API de la „ +
„Docker Container, dar ai făcut o cerere proastă”,
}
// Codifică mesajul ca JSON și trimite-l ca răspuns
err := json. NewEncoder (scriitor).Codificare(&mesaj)
dacă greș!= zero {
întoarcere
}
}
}
Ați configurat funcția de gestionare în funcția principală cu ruta ca /api/docker/go. The dockerTestEndpoint Funcția handler validează că cererea către handler este o cerere GET. Dacă este o solicitare GET, aceasta codifică o instanțiere Mesaj instanță de struct către client pe baza stării cererii.
Iată cum puteți monta funcția de gestionare pe o rută și puteți configura serverul să ruleze pe port 8080:
funcprincipal() {
// Înregistrați funcția de gestionare „dockerTestEndpoint”
// pentru a gestiona solicitările pentru adresa URL „/api/docker/go”.
http. HandleFunc(„/api/docker/go”, dockerTestEndpoint)
// Porniți serverul HTTP și ascultați cererile primite pe portul 8080.
greșit := http. ListenAndServe(":8080", zero)
dacă greș!= zero {
Buturuga. Fatalln(„Există o eroare cu serverul:”, greseala)
}
}
The principal funcția este punctul de intrare al serverului, care ascultă pe port 8080. The HandleFunc metoda montează rutele pe funcția handler. The ListenAndServe metoda pornește serverul pe portul gazdă local specificat 8080.
Începeți să vă containerizați aplicațiile Go cu Docker
După instalarea și configurarea Docker, veți avea nevoie de un fișier Docker numit Dockerfile pentru a crea și a construi o imagine Docker pentru aplicația Go. Veți specifica comenzi pentru imaginea de bază și comenzi pentru a copia fișierele, a adăuga directorul de lucru și a rula aplicația în Dockerfile.
Rulați această comandă în terminalul spațiului de lucru pentru a crea un Dockerfile.
atingeți Dockerfile
Veți specifica comenzile pentru construirea imaginii dvs. Docker în fișierul Docker.
Dacă există fișiere pe care doriți să le separați din imaginea dvs. Docker, puteți utiliza a .dockerignore fişier. The .dockerignore fișierele funcționează exact ca .gitignore fişiere.
atinge .dockerignore
Apoi, veți specifica comenzi de compilare în fișierul Docker pentru a vă containeriza aplicațiile.
Definirea comenzilor în fișierul Docker
Dockerfiles sunt personalizabile în funcție de specificațiile proiectului dvs. Veți defini comenzi pentru a construi imaginea de bază pentru construirea aplicației.
Iată un exemplu de conținut al unui fișier Dockerfile care creează serverul web de mai sus:
# Utilizați o imagine de bază Golang
DIN golang: mai recent# Setați directorul de lucru în interiorul containerului
WORKDIR /app# Copiază toate fișierele din directorul local în directorul de lucru din container
COPIE. .# Descărcați dependențele modulului Go
ALERGA du-te la descărcare de mod# Construiți aplicația Go
ALERGA mergeți să construiți aplicația -o
# Setați punctul de intrare pentru aplicație
PUNCT DE INTRARE [„./aplicație”]
Dockerfile folosește golang: mai recent imagine de bază, pentru a construi aplicația după setarea directorului de lucru în /app.
Dockerfile copiază fișierele cu COPIE comandă și descarcă dependențe cu ALERGA comanda.
Fișierul specifică o operație de construire și rulare cu ALERGA comanda, apoi setează comanda să ruleze când containerul începe cu CMD comanda.
Salvați fișierul Dockerfile în același director ca dvs du-te.mod și principal.go dosare; apoi rulați această comandă pentru a construi o imagine Docker din acest fișier Docker:
docker build -t GolangTutorial .
Comanda de mai sus va crea o imagine Docker cu eticheta golangtutorial. Puteți rula un container cu această comandă:
docker run -p 8080:8080 golangtutorial
Comanda mapează portul 8080 de la container la portul 8080 pe gazda locală a mașinii gazdă. Puteți solicita serverul care rulează în containerul Docker de la mașina gazdă.
Iată rezultatul de la trimiterea cererii CURL către server, de data aceasta rulând pe Docker:
Puteți utiliza Docker Compose pentru orchestrarea containerelor
Docker Compose este un instrument pe care îl puteți folosi pentru a orchestra (a lucra cu multe) containere Docker. Docker Compose vă permite să definiți o aplicație cu mai multe containere într-un singur fișier YAML. Puteți rula și gestiona întreaga aplicație cu o singură comandă.
Puteți utiliza Docker Compose pentru implementarea și gestionarea aplicațiilor complexe în containere. Docker Compose simplifică gestionarea cu implementări automate și consecvente.