Tartalomjegyzék
Go Webes Alkalmazás Telepítése Dockerrel és Nginx-szel Ubuntu 22.04 Rendszeren
A Go programozási nyelv népszerűsége folyamatosan növekszik, és egyre több webes alkalmazás épül fel vele. Az alkalmazások futtatásához és telepítéséhez számos lehetőség áll rendelkezésre, de a Docker és az Nginx kombinációja kiváló megoldást nyújt a könnyű skálázhatóság, a konzisztencia és a biztonság szempontjából. Ebben a cikkben lépésről lépésre bemutatjuk, hogyan telepíthetsz egy Go webes alkalmazást Dockerrel és Nginx-szel Ubuntu 22.04 rendszeren.
1. Előkészületek
Mielőtt nekikezdenénk a telepítésnek, győződjünk meg róla, hogy az alábbi szoftverek telepítve vannak a rendszerünkön:
* Docker: A Docker egy nyílt forráskódú platform, amelyet konténerek létrehozására és futtatására használnak.
* Docker Compose: A Docker Compose egy eszköz, amely segít a Docker konténerek definiálásában és futtatásában egyetlen konfigurációs fájl segítségével.
* Nginx: Az Nginx egy webkiszolgáló, amelyet gyakran használnak fordítóként (reverse proxy) webes alkalmazások számára.
Telepítés a terminálon keresztül:
bash
sudo apt update
sudo apt install docker.io docker-compose nginx
Miután telepítettük a szükséges szoftvereket, indítsuk el a Docker szolgáltatást:
bash
sudo systemctl start docker
A Docker sikeres telepítésének ellenőrzéséhez futtassuk a következő parancsot:
bash
docker version
2. Go Alkalmazás Készítése
Ebben a példában egy egyszerű „Hello World” webes alkalmazást fogunk létrehozni Go-ban.
lépés 1: Hozzunk létre egy új könyvtárat az alkalmazásunk számára:
bash
mkdir go-app
cd go-app
lépés 2: Hozzunk létre egy main.go
fájlt és illesszük bele a következő kódot:
go
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
lépés 3: Futtassuk az alkalmazást a következő paranccsal:
bash
go run main.go
Ha minden rendben van, akkor az alkalmazás fut a localhost:8080
címen.
3. Dockerfile Létrehozása
A Dockerfile egy konfigurációs fájl, amely meghatározza a Docker konténer építési lépéseit. Hozzunk létre egy Dockerfile
fájlt a go-app
könyvtárban:
dockerfile
FROM golang:latest
WORKDIR /app
COPY . .
RUN go mod download
RUN go build -o main
EXPOSE 8080
CMD ["/app/main"]
Ez a Dockerfile a golang:latest
képet használja alapként, beállítja a munkahelyet /app
könyvtárba, bemásolja az alkalmazás fájljait a konténerbe, letölti a szükséges függőségeket, lefordítja az alkalmazást, megnyitja a 8080
portot és elindítja az alkalmazást.
4. Docker Compose Konfigurációja
A Docker Compose egyetlen fájlt használ a többszörös Docker konténer definiálására és futtatására. Hozzunk létre egy docker-compose.yml
fájlt a go-app
könyvtárban:
yaml
version: "3.8"
services:
go-app:
build: .
ports:
- "8080:8080"
restart: unless-stopped
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- go-app
Ez a docker-compose.yml
fájl két szolgáltatást definiál:
* go-app: Ez a szolgáltatás a Dockerfile-unk segítségével építi fel a Go alkalmazás konténerét és a 8080
portot képezi le a gazdagép 8080
portjára.
* nginx: Ez a szolgáltatás az Nginx képet használja, a 80
portot képezi le a gazdagép 80
portjára és a nginx.conf
fájlt köti be az Nginx konfigurációs fájlba.
5. Nginx Konfigurációja
Hozzunk létre egy nginx.conf
fájlt a go-app
könyvtárban:
nginx
server {
listen 80;
location / {
proxy_pass http://go-app:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Ez a konfigurációs fájl az Nginx-t úgy állítja be, hogy a go-app
konténer 8080
portjára irányítsa a forgalmat. Az X-Real-IP
és X-Forwarded-For
fejléceket is beállítja a helyes IP-cím átadásához.
6. Alkalmazás Indítása
Most már minden megvan ahhoz, hogy elindítsuk a Go alkalmazást a Dockerrel és az Nginx-szel. Futtassuk a következő parancsot a go-app
könyvtárban:
bash
docker-compose up -d
Ez a parancs a Docker Compose-t futtatja a docker-compose.yml
fájl alapján, amely felépíti és elindítja a go-app
és nginx
szolgáltatásokat.
7. Alkalmazás Hozzáférése
A Go alkalmazás most elérhető a localhost
címen (vagy a szerver IP-címén, ha a szerveren telepítettük). Böngészőnkben a localhost
megnyitásával láthatjuk az „Hello World!” üzenetet.
Következtetés
Ebben a cikkben bemutattuk, hogyan lehet egy Go webes alkalmazást telepíteni Dockerrel és Nginx-szel Ubuntu 22.04 rendszeren. A Docker és az Nginx kombinációja lehetővé teszi a Go alkalmazások egyszerű telepítését, skálázását és biztonságos futtatását. Az alkalmazás konfigurációja a Dockerfile és a Docker Compose segítségével könnyen kezelhető, és az Nginx fordítóként biztosítja a biztonságos forgalom-irányítást.
Gyakran Feltett Kérdések
1. Miért használok Docker-t a Go alkalmazásom telepítéséhez?
A Docker lehetővé teszi az alkalmazásunk csomagolását és futtatását minden platformon, biztosítva a konzisztenciát és a skálázhatóságot.
2. Miért használok Nginx-t a Go alkalmazásommal?
Az Nginx egy gyors és hatékony fordító, amely segít a Go alkalmazásunk védelmében és a forgalom hatékony kezelésében.
3. Hogyan telepítem a Go-t az Ubuntu 22.04 rendszeren?
A Go telepítése egyszerű, a hivatalos webhelyről letöltheted a szükséges csomagot.
4. Hogyan adhatok hozzá egy adatbázist a Go alkalmazásomhoz?
A Go alkalmazásokhoz számos adatbázis-illesztőprogram áll rendelkezésre, mint például a mysql
, postgres
és sqlite
.
5. Hogyan tesztelhetem a Go alkalmazásomat a Dockerben?
A Dockerben a docker-compose run
paranccsal tesztelheted az alkalmazásodat a fejlesztési környezetben.
6. Hogyan telepítem a Go alkalmazásomat egy produkciós környezetbe?
A Docker és az Nginx segítségével könnyen telepítheted a Go alkalmazásodat egy produkciós környezetbe, mint például egy felhőszolgáltatóra.
7. Hogyan frissíthetem a Go alkalmazásomat a Dockerben?
A Dockerben a docker-compose pull
és docker-compose up -d
parancsokkal frissítheted az alkalmazásodat az új képekre.
8. Mi a Docker Compose szerepe a Go alkalmazás telepítésében?
A Docker Compose lehetővé teszi a több Docker konténer definiálását és futtatását egyetlen konfigurációs fájl segítségével, megkönnyítve az alkalmazás kezelését.
9. Hogyan konfigurálhatom az Nginx-t, hogy a Go alkalmazásomhoz egyéni tartományt használjak?
Az Nginx konfigurációs fájlban beállíthatod a tartományt és a megfelelő proxy_pass beállítást.
10. Milyen biztonsági intézkedéseket kell tennem a Go alkalmazásom védelme érdekében?
A Go alkalmazások biztonságát több szinten lehet biztosítani, például a megfelelő kódolási gyakorlatok betartásával, a függőségek naprakészségének biztosításával és a megfelelő biztonsági beállítások beállításával a Dockerben és az Nginx-ben.
Kulcsszavak: Go, webes alkalmazás, telepítés, Docker, Nginx, Ubuntu 22.04, konténer, fordító, konfiguráció, biztonság, skálázhatóság, Dockerfile, Docker Compose, nginx.conf
Linkek:
* Go hivatalos webhelye
* Docker hivatalos webhelye
* Docker Compose dokumentáció
* Nginx hivatalos webhelye
* Docker telepítése Ubuntu 22.04-en
* Docker Compose telepítése és használata
* Nginx telepítése Ubuntu 22.04-en