Ismerje meg, hogyan használhatja a Dockert Go-alkalmazásai hatékony csomagolására és üzembe helyezésére, így azok hordozhatóvá és könnyen kezelhetővé válnak.

A Docker a legnépszerűbb konténerezési technológia egyszerűségének és könnyű kezelhetőségének köszönhetően. A Docker enyhíti a hordozhatósági problémák okozta stresszt a szoftverfejlesztés és -terjesztés során. A docker-tárolókat a legtöbb felhőszolgáltatónál telepítheti.

A Go-alkalmazások Dockerrel való tárolása elősegítheti a konzisztens és megbízható telepítést a különböző környezetekben. A Go-alkalmazásokat különféle környezetekben, például fejlesztési, átmeneti és éles környezetben is üzembe helyezheti. A Docker-tárolók könnyűek, és kevesebb helyet foglalnak el, mint a hagyományos virtuális gépek. Ezzel pénzt takaríthat meg a tárhely költségein, és gyorsabbá teheti a telepítést.

Egyszerű webszerver beállítása a Go-ban

A Go standard könyvtára tartalmazza azokat a csomagokat, amelyekre egy egyszerű webszerver beállításához szüksége lesz.

instagram viewer

Először importálja a http, log, és json csomagokat. fogod használni Go's http csomag a szerver beállításához és KAP végpont kérése. A log csomag a lehetséges hibák naplózásához a konzolon. A json csomag egy struktúra JSON-ba kódolásához az API végponthoz.

import (
"kódolás/json"
"napló"
"net/http"
)

A struct példányt JSON-ként kódolhatja az ügyfélnek válaszként a kérés érvényessége alapján, így:

típus Üzenet struct {
Válasz húr`json:"válasz"`
Leírás húr`json:"leírás"`
}

A kezelő függvény sikeres üzenetet ad vissza az ügyfélnek, ha a végponthoz intézett kérés a KAP kérés.

// dockerTestEndpoint kezeli az API-végpontot a Docker-kapcsolat teszteléséhez
funcdockerTestEndpoint(író http. ResponseWriter, kérje a *http. Kérés) {

// A válaszfejléc beállítása a JSON-tartalom jelzésére
író. Header().Set("Tartalom típus,""alkalmazás/json")

// Ha a kérési módszer GET
ha kérés. Módszer == "KAP" {

// Állítsa be a válasz állapotkódját 200 OK-ra
író. WriteHeader (http. ÁllapotOK)

// Hozzon létre egy üzenetstruktúrát a sikeres válaszhoz
üzenet := Üzenet{
Válasz: "Sikeres",
Leírás: "Sikeresen elérte az API végpontot" +
"A Docker konténerből",
}
// Kódolja az üzenetet JSON-ként, és küldje el válaszként
hiba := json. NewEncoder (író). Kódolás (&üzenet)
ha hiba! = nulla {
Visszatérés
}
} más {

// Ha a kérés metódusa nem GET
// Állítsa be a válasz állapotkódját 400 Bad Request értékre
író. WriteHeader (http. StatusBadRequest)

// Hozzon létre egy üzenetstruktúrát egy rossz kérésre adott válaszhoz
üzenet := Üzenet{
Válasz: "Rossz kérés",
Leírás: "Sikeresen elérte az API-végpontot +
"Docker Container, de rossz kérést nyújtottál be",
}

// Kódolja az üzenetet JSON-ként, és küldje el válaszként
hiba := json. NewEncoder (író). Kódolás (&üzenet)
ha hiba! = nulla {
Visszatérés
}
}
}

A kezelõ funkciót a fõ funkcióban állítja be a as útvonallal /api/docker/go. A dockerTestEndpoint A kezelő függvény ellenőrzi, hogy a kezelőhöz intézett kérés GET kérés-e. Ha ez egy GET-kérés, akkor példányosított kérést kódol Üzenet struct példányt az ügyfélnek a kérés állapota alapján.

Így csatlakoztathatja a kezelő funkciót egy útvonalra, és hogyan állíthatja be a szervert, hogy a porton fusson 8080:

funcfő-() {
// Regisztrálja a 'dockerTestEndpoint' kezelő függvényt
// az „/api/docker/go” URL-re vonatkozó kérések kezelésére.
http. HandleFunc("/api/docker/go", dockerTestEndpoint)

// Indítsa el a HTTP-kiszolgálót, és figyelje a bejövő kéréseket a 8080-as porton.
hiba := http. ListenAndServe(":8080", nulla)
ha hiba! = nulla {
log. Fatalln("Hiba történt a szerverrel:", hiba)
}
}

A fő- funkció a szerver belépési pontja, amely a porton figyel 8080. A HandleFunc metódus az útvonalakat a kezelő függvényhez csatolja. A ListenAndServe metódus elindítja a kiszolgálót a megadott helyi gazdagépporton 8080.

Kezdő lépések Go-alkalmazásainak tárolása a Docker segítségével

A Docker telepítése és beállítása után szüksége lesz egy Dockerfile nevű Docker-fájlra a Docker-kép létrehozásához és létrehozásához a Go alkalmazáshoz. Megadhat parancsokat az alapképhez, valamint a fájlok másolásához, a munkakönyvtár hozzáadásához és az alkalmazás futtatásához a Dockerfile-ban.

Futtassa ezt a parancsot a munkaterület termináljában Docker-fájl létrehozásához.

érintse meg a Dockerfile elemet

Meg kell adnia a Docker-kép létrehozásához szükséges parancsokat a Dockerfile-ban.

Ha vannak olyan fájlok, amelyeket el szeretne választani a Docker-képétől, használhatja a .docker figyelmen kívül hagyni fájlt. A .docker figyelmen kívül hagyni a fájlok pontosan úgy működnek .gitignore fájlokat.

érintse meg a .dockerignore

Ezután a Dockerfile-ban adja meg a build parancsokat az alkalmazások konténerbe helyezéséhez.

Parancsok meghatározása a Docker-fájlban

A Docker-fájlok testreszabhatók a projekt specifikációi alapján. Parancsokat fog megadni az alkalmazás létrehozásához szükséges alapkép létrehozásához.

Íme egy példa a fenti webszervert felépítő Dockerfile tartalmára:

# Használjon Golang alapképet
TÓL TŐL golang: legújabb

# Állítsa be a munkakönyvtárat a tárolóban
WORKDIR /app

# A helyi könyvtárban lévő összes fájlt a tároló munkakönyvtárába másolja
MÁSOLAT. .

# Töltse le a Go modul függőségeit
FUSS megy a mod letöltése

# Készítse el a Go alkalmazást
FUSS építsd meg az -o alkalmazást

# Állítsa be az alkalmazás belépési pontját
BELÉPÉSI PONT ["./app"]

A Dockerfile használ golang: legújabb alapkép, az alkalmazás létrehozásához a munkakönyvtár beállítása után /app.

A Dockerfile a fájlokat a MÁSOLAT parancsot, és letölti a függőségeket a FUSS parancs.

A fájl egy build és run műveletet határoz meg a FUSS parancsot, majd beállítja, hogy a parancs akkor futjon le, amikor a tároló a következővel indul CMD parancs.

Mentse a Docker-fájlt ugyanabba a könyvtárba, mint a saját go.mod és fő.go fájlok; majd futtassa ezt a parancsot egy Docker-kép létrehozásához ebből a Docker-fájlból:

docker build -t Golang Tutorial .

A fenti parancs egy Docker-képet hoz létre a címkével golangtutorial. Egy tárolót ezzel a paranccsal futtathat:

docker run -p 8080:8080 golangtutorial

A parancs leképezi a 8080-as portot a tárolóról a 8080-as portra a gazdagép helyi gazdagépén. A Docker-tárolóban futó kiszolgálót lekérheti a gazdagépről.

Íme az eredmény innen a CURL kérés elküldése a szervernek, ezúttal a Dockeren fut:

Használhatja a Docker Compose-t a konténer hangszereléséhez

A Docker Compose egy olyan eszköz, amellyel hangszerelhet (sok) Docker-tárolót. A Docker Compose lehetővé teszi egy többtárolóból álló alkalmazás meghatározását egyetlen YAML-fájlban. Egyetlen paranccsal futtathatja és kezelheti a teljes alkalmazást.

A Docker Compose segítségével összetett konténeres alkalmazásokat telepíthet és kezelhet. A Docker Compose leegyszerűsíti a kezelést az automatizált és következetes telepítésekkel.