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.
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.