Go webes alkalmazás telepítése Dockerrel és Nginx-szel Ubuntu 22.04 rendszeren

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