5 Docker projekt, amivel azonnal belevághatsz a tanulásba

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?

Kérjük, ellenőrizd a mező formátumát, és próbáld újra.
Köszönjük, hogy feliratkoztál.

vagyunk.hu hírlevél

Hozzászólás

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük