A konténertechnológia megértése kulcsfontosságú a modern fejlesztésben, ezért ezek a Docker projektek kezdőknek kiválóak az alapok elsajátításához. Gyakorlati példákon keresztül mutatjuk be a rendszer működését. A kódok azonnal másolhatók és futtathatók.
1. Statikus weboldal hosztolása Nginx segítségével
Ez a feladat bemutatja a konténerizáció alapjait. Egy egyszerű HTML oldalt fogunk kiszolgálni egy Nginx szerverrel. Nincs szükség helyi webszerver telepítésére.
Hozzon létre egy mappát a projektnek. Ebben készítse el az index.html fájlt az alábbi tartalommal:
<!DOCTYPE html>
<html>
<head>
<title>Docker Teszt</title>
</head>
<body>
<h1>Szia, ez az első konténerem!</h1>
</body>
</html>
Ezután hozza létre a Dockerfile nevű fájlt kiterjesztés nélkül. Ez a fájl írja le a konténer építésének lépéseit.
# Hivatalos Nginx alapozás
FROM nginx:alpine
# A HTML fájl másolása a szerver könyvtárába
COPY index.html /usr/share/nginx/html/index.html
Nyissa meg a terminált a mappában. Futtassa az alábbi parancsot a képfájl elkészítéséhez:
docker build -t elso-weboldalam .
Indítsa el a konténert a 8080-as porton:
docker run -d -p 8080:80 elso-weboldalam
Nyissa meg a böngészőt a http://localhost:8080 címen. Az oldal azonnal betöltődik.
2. Több konténer kezelése Docker Compose eszközzel
A valós alkalmazások gyakran több szolgáltatást használnak. Itt egy Python keretrendszert kötünk össze egy Redis adatbázissal. A Docker Compose segítségével egyetlen fájlban definiáljuk őket.
Hozzon létre egy app.py fájlt:
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
count = redis.incr('hits')
return f'Látogatások száma: {count}'
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
Szükség lesz egy requirements.txt fájlra is:
flask
redis
Készítse el a Dockerfile-t ehhez a projekthez:
FROM python:3.9-alpine
WORKDIR /code
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Végül hozza létre a docker-compose.yml fájlt. Ez kapcsolja össze a két szolgáltatást.
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
Indítsa el a rendszert egyetlen paranccsal:
docker compose up
A http://localhost:5000 címen látható lesz a számláló. Frissítésre a szám növekszik.
3. Közös adatbázis több konténerhez
Gyakori igény az erőforrások takarékos kezelése. Nem mindig kell minden szolgáltatáshoz külön adatbázist indítani. Ez a példa egy MySQL szervert indít el, amelyhez több alkalmazás is kapcsolódhat.
Hozzon létre egy hálózatot a kommunikációhoz:
docker network create kozos-halo
Indítsa el a MySQL adatbázist ezen a hálózaton:
docker run -d \
--name kozos-db \
--network kozos-halo \
-e MYSQL_ROOT_PASSWORD=titkos \
mysql:5.7
Most indíthat egy másik konténert, amely csatlakozik hozzá. Példaként egy adminisztrációs felületet használunk.
docker run -d \
--name phpmyadmin \
--network kozos-halo \
-e PMA_HOST=kozos-db \
-p 8081:80 \
phpmyadmin/phpmyadmin
A http://localhost:8081 címen elérhető a felület. A szerver neve kozos-db, a jelszó pedig titkos.
4. Automatizált folyamatok építése
A modern szoftverfejlesztés alapja a folyamatos integráció. A Jenkins szerver konténerben történő futtatása elszigetelt környezetet biztosít. Így a build folyamatok nem szemetelik tele a gazdagépet.
A Jenkins indítása Dockerben:
docker run -d \
-p 8082:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
A parancs futtatása után a Jenkins elérhető a 8082-es porton. A jelszót a konténer naplójából olvashatja ki.
docker logs <konténer_azonosító>
Ez a megoldás lehetővé teszi a kódok automatikus tesztelését. Minden módosítás után frissülhet a rendszer.
5. Rendszerfelügyelet és naplózás
A futó konténerek állapotát figyelni kell. A Prometheus és Grafana párosa népszerű választás erre a feladatra. A Prometheus gyűjti az adatokat, a Grafana pedig megjeleníti azokat.
Hozzon létre egy prometheus.yml konfigurációs fájlt:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'docker'
static_configs:
- targets: ['host.docker.internal:9323']
Indítsa el a Prometheust a konfigurációval:
docker run -d \
-p 9090:9090 \
-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
Ez a stack valós időben mutatja a CPU és memória használatot. A hibák így gyorsan felderíthetők.
Miért érdemes ezekkel kezdeni?
Ezek a projektek lefedik a legfontosabb területeket. Megtanulhatod a képfájlok építését és a hálózatkezelést. Ez a lista stabil alapot ad a további fejlődéshez. A gyakorlat teszi a mestert. Ne félj kísérletezni a paraméterekkel. A konténerek bármikor törölhetők és újraindíthatók. Na, kipróbáltad már?




