Naučite kako koristiti Docker za učinkovito pakiranje i implementaciju Go aplikacija, čineći ih prenosivima i lakima za upravljanje.

Docker je najpopularnija tehnologija kontejnerizacije zahvaljujući svojoj jednostavnosti i lakoći korištenja. Docker ublažava stres problema s prenosivošću u razvoju i distribuciji softvera. Možete implementirati svoje docker spremnike kod većine pružatelja usluga u oblaku.

Kontejneriziranje vaših Go aplikacija s Dockerom može vam pomoći osigurati dosljednu i pouzdanu implementaciju u različitim okruženjima. Svoje Go aplikacije možete implementirati u različita okruženja kao što su razvoj, postavljanje i proizvodnja. Docker spremnici su lagani i zauzimaju manje prostora od tradicionalnih virtualnih strojeva. To vam može uštedjeti novac na troškovima hostinga, a može i ubrzati vaše implementacije.

Postavljanje jednostavnog web poslužitelja u Go

Standardna biblioteka Go sadrži pakete koji će vam trebati za postavljanje jednostavnog web poslužitelja.

Prvo uvezite

instagram viewer
http, log, i json paketi. Vi ćete koristiti Goov http paket za postavljanje poslužitelja i DOBITI krajnja točka zahtjeva. The log paket za bilježenje mogućih grešaka na vašoj konzoli. The json paket za kodiranje strukture u JSON za API krajnju točku.

uvoz (
"kodiranje/json"
"log"
"net/http"
)

Instancu strukture možete kodirati kao JSON klijentu kao odgovor na temelju valjanosti zahtjeva na sljedeći način:

tip Poruka strukturirati {
Odgovor niz`json:"odgovor"`
Opis niz`json:"opis"`
}

Funkcija rukovatelja vratila bi uspješnu poruku klijentu ako je zahtjev krajnjoj točki a DOBITI zahtjev.

// dockerTestEndpoint upravlja krajnjom točkom API-ja za testiranje povezivosti Dockera
funkdockerTestEndpoint(pisac http. ResponseWriter, zahtjev *http. Zahtjev) {

// Postavite zaglavlje odgovora da označava JSON sadržaj
pisac. Zaglavlje().Set("Vrsta sadržaja,""aplikacija/json")

// Ako je metoda zahtjeva GET
ako zahtjev. Metoda == "DOBITI" {

// Postavite kod statusa odgovora na 200 OK
pisac. WriteHeader (http. Status OK)

// Kreirajte strukturu poruke za uspješan odgovor
poruka := Poruka{
Odgovor: "Uspješan",
Opis: "Uspješno ste pogodili krajnju točku API-ja" +
"Iz vašeg Docker spremnika",
}
// Kodirajte poruku kao JSON i pošaljite je kao odgovor
pogreška := json. NewEncoder (pisac).Encode(&message)
ako pogriješiti != nula {
povratak
}
} drugo {

// Ako metoda zahtjeva nije GET
// Postavite kod statusa odgovora na 400 Loš zahtjev
pisac. WriteHeader (http. StatusBadRequest)

// Kreirajte strukturu poruke za loš odgovor na zahtjev
poruka := Poruka{
Odgovor: "Loš zahtjev",
Opis: "Uspješno ste pogodili krajnju točku API-ja sa svog " +
"Docker kontejner, ali napravili ste loš zahtjev",
}

// Kodirajte poruku kao JSON i pošaljite je kao odgovor
pogreška := json. NewEncoder (pisac).Encode(&message)
ako pogriješiti != nula {
povratak
}
}
}

Funkciju rukovatelja postavljate u glavnoj funkciji s rutom kao /api/docker/go. The dockerTestEndpoint funkcija rukovatelja potvrđuje da je zahtjev obrađivaču GET zahtjev. Ako je to GET zahtjev, on kodira instancirani Poruka instancu strukture klijentu na temelju statusa zahtjeva.

Evo kako možete montirati funkciju rukovatelja na rutu i postaviti poslužitelj da radi na priključku 8080:

funkglavni() {
// Registrirajte funkciju rukovatelja 'dockerTestEndpoint'
// za obradu zahtjeva za URL "/api/docker/go".
http. HandleFunc("/api/docker/go", dockerTestEndpoint)

// Pokrenite HTTP poslužitelj i osluškujte dolazne zahtjeve na portu 8080.
pogriješiti := http. SlušajIPosluži(":8080", nula)
ako pogriješiti != nula {
log. Fatalln("Došlo je do pogreške s poslužiteljem:", pogreška)
}
}

The glavni funkcija je ulazna točka poslužitelja, koja sluša na portu 8080. The HandleFunc metoda postavlja rute na funkciju rukovatelja. The Slušajte i služite metoda pokreće poslužitelj na navedenom portu lokalnog hosta 8080.

Početak Kontejneriziranje vaših Go aplikacija s Dockerom

Nakon instaliranja i postavljanja Dockera, trebat će vam Docker datoteka pod nazivom Dockerfile za izradu i izgradnju Docker slike za vašu aplikaciju Go. Odredit ćete naredbe za osnovnu sliku i naredbe za kopiranje datoteka, dodavanje radnog direktorija i pokretanje aplikacije u Dockerfileu.

Pokrenite ovu naredbu u terminalu vašeg radnog prostora da biste stvorili Dockerfile.

dodirnite Dockerfile

Odredit ćete naredbe za izgradnju vaše Docker slike u Docker datoteci.

Ako postoje datoteke koje želite odvojiti od svoje Docker slike, možete koristiti a .dockerignore datoteka. The .dockerignore datoteke rade točno kao .gitignorirati datoteke.

dodir .dockerignore

Zatim ćete navesti naredbe za izgradnju u svojoj Docker datoteci za kontejneriziranje vaših aplikacija.

Definiranje naredbi u Docker datoteci

Docker datoteke se mogu prilagoditi na temelju specifikacija vašeg projekta. Definirat ćete naredbe za izradu osnovne slike za izradu aplikacije.

Evo primjera sadržaja Dockerfilea koji izgrađuje gore navedeni web poslužitelj:

# Koristite Golang osnovnu sliku
IZ golang: najnovije

# Postavite radni direktorij unutar spremnika
RADNI DIR /app

# Kopira sve datoteke u lokalnom direktoriju u radni direktorij u spremniku
KOPIRATI. .

# Preuzmite ovisnosti modula Go
TRČANJE go mod preuzimanje

# Izgradite Go aplikaciju
TRČANJE go build -o app

# Postavite ulaznu točku za aplikaciju
ULAZNA TOČKA ["./aplikacija"]

Dockerfile koristi golang: najnovije osnovna slika, za izradu aplikacije nakon postavljanja radnog direktorija /app.

Dockerfile kopira datoteke s KOPIRATI naredba i preuzimanja ovisnosti s TRČANJE naredba.

Datoteka navodi operaciju izgradnje i pokretanja s TRČANJE naredba, zatim postavlja naredbu da se pokrene kada se spremnik pokrene s CMD naredba.

Spremite Dockerfile u isti direktorij kao i vaš go.mod i glavni.krenuti datoteke; zatim pokrenite ovu naredbu za izgradnju Docker slike iz ove Docker datoteke:

docker build -t GolangTutorial.

Gornja naredba će stvoriti Docker sliku s oznakom golangtutorial. Možete pokrenuti spremnik ovom naredbom:

docker run -p 8080:8080 golangtutorial

Naredba preslikava port 8080 iz spremnika u port 8080 na lokalnom hostu glavnog računala. Poslužitelj koji radi u Docker spremniku možete zatražiti od glavnog računala.

Evo rezultata iz slanje CURL zahtjeva poslužitelju, ovaj put radi na Dockeru:

Možete koristiti Docker Compose za orkestraciju spremnika

Docker Compose je alat koji možete koristiti za orkestriranje (rad s mnogo) Docker spremnika. Docker Compose vam omogućuje da definirate aplikaciju s više spremnika u jednoj YAML datoteci. Možete pokrenuti i upravljati cijelom aplikacijom s jednom naredbom.

Možete koristiti Docker Compose za implementaciju i upravljanje složenim kontejnerskim aplikacijama. Docker Compose pojednostavljuje upravljanje automatiziranim i dosljednim implementacijama.