Hogyan használjuk a Docker Compose-t több konténeres alkalmazásokhoz?
A Compose automatizálja a konténerkezelést, ezzel egyszerűsítve az alkalmazások méretezését és telepítését a Dockerben. Oktatóanyagunkban részletesen bemutatjuk a Docker Compose beállítását és használatát, hogy egyszerűsítsd az alkalmazások telepítési folyamatát.
Mi az a Docker Compose?
A Docker Compose alkalmazások kezelésére és a konténerfejlesztés hatékonyságának növelésére szolgál. A konfigurációkat egyetlen YAML fájlban határozzák meg, így az alkalmazások könnyen összeállíthatók és méretezhetők. A Docker Compose-t gyakran használják helyi környezet beállítására. Ugyanakkor része lehet a folyamatos integráció/folyamatos szállítás (CI/CD) munkafolyamatnak is. A fejlesztők meghatározhatnak egy adott konténerverziót tesztelésre vagy bizonyos pipeline fázisokra. Ez megkönnyíti a problémák azonosítását és a hibák kijavítását, mielőtt az alkalmazás termelésbe kerülne.
Docker Compose követelmények
A konténer-koordináláshoz mind a Docker Engine, mind a Docker Compose szükséges. Győződjön meg arról, hogy a rendszerére az alábbiak közül az egyik telepítve van:
- Docker Engine és Docker Compose: Önálló bináris fájlként telepíthető.
- Docker Desktop: Grafikus felhasználói felülettel rendelkező fejlesztői környezet, amely tartalmazza a Docker Engine-t és a Docker Compose-t.
Tudja meg, hogyan telepítheti a Docker Compose-t különböző operációs rendszerekre az oktatóanyagainkból:
A Docker Compose használatának lépésről lépésre történő útmutatója
Az alábbiakban bemutatjuk, hogyan lehet a Docker Compose-t használni egy egyszerű, látogatószámlálót használó Python webalkalmazással. Ehhez a Python Flask keretrendszert és a Redis memóriában tárolt adatbázist használjuk. Nem szükséges telepíteni a Python vagy a Redis programot, mivel ezek Docker-képek formájában állnak rendelkezésre.
1. lépés: Projektfájlok létrehozása
Indítsa el a terminált, és hozzon létre egy új mappát a projekthez.
$ mkdir composedemoshellVáltson át a könyvtárba.
$ cd composedemoshellHozzon létre egy app.py nevű fájlt ebben a mappában, és adja hozzá a következő kódot:
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I was here {} times.\n'.format(count)pythonBeállításunkban a redis hálózati nevet és az alapértelmezett 6379 portot használjuk a Redis szolgáltatáshoz való csatlakozáshoz. Ezenkívül megadjuk, hogy a get_hit_count() funkciónak többször is meg kell kísérelnie a szolgáltatáshoz való csatlakozást. Ez akkor ajánlott, ha a Redis az alkalmazás indításakor nem áll azonnal rendelkezésre, vagy futás közben időszakos csatlakozási problémák léphetnek fel.
Hozza létre a requirements.txt fájlt a függőségekkel:
flask
redisplaintext2. lépés: Dockerfile beállítása
A Dockerfile a Docker-képhez használatos. Ez meghatározza az összes függőséget, amelyre a Python-alkalmazásnak szüksége van.
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]shellUtasítjuk a Dockert, hogy használja a Python 3.7 képet. Ezenkívül beállítjuk a flask parancshoz szükséges környezeti változókat. apk add használatával telepítjük a szükséges függőségeket, beleértve a gcc-t is. Ahhoz, hogy a konténer figyelhesse az 5000-es portot, megadjuk EXPOSE. COPY használatával átvisszük a jelenlegi mappa tartalmát a konténer /code munkakönyvtárába. Végül a konténer alapértelmezett parancsaként flask run választjuk.
Ellenőrizze, hogy a Dockerfile fájl kiterjesztés nélkül lett-e elmentve, mivel egyes szerkesztők automatikusan hozzáadják a .txt kiterjesztést.
3. lépés: YAML fájl létrehozása
A docker-compose.yml fájlban konfiguráljuk a „redis” és a „web” szolgáltatásokat.
version: "3.9"
services:
web:
build: .
ports:
- "8000:5000"
redis:
image: "redis:alpine"yamlA webszolgáltatás a Dockerfile által létrehozott Docker-képpel épül fel. A konténert és a gazdaszámítógépet a 8000-as porthoz rendeli, míg a Flask webszerver az 5000-es porton fut. A Redis-kép viszont közvetlenül a hivatalos Docker Hub-ból származik.
4. lépés: Futtassa az alkalmazást a Compose segítségével
Indítsa el az alkalmazást a projektmappából.
docker compose upshellNyissa meg *a http://localhost weboldalt a böngészőjében. Beírhatja *a http://127.0.0.1 címet is.
A következő üzenetnek kell megjelenni:

Frissítse az oldalt. A megtekintések száma most 1-gyel növekedett.

Az alkalmazás leállítása a következő paranccsal:
$ docker compose downshellAz alkalmazás futtatásának leállításához egyszerűen nyomja meg Ctrl + C billentyűkombinációt a terminálban.
5. lépés: Bind mount hozzáadása
Ha hozzáadni szeretne egy bind mountot a webszolgáltatáshoz, ezt a docker-compose.yml fájlban teheti meg.
version: "3.9"
services:
web:
build: .
ports:
- "8000:5000"
volumes:
- .:/code
environment:
FLASK_DEBUG: "true"
redis:
image: "redis:alpine"yamlA Volumes szakaszban megadjuk, hogy a jelenlegi projektmappa csatolva legyen a konténer /code könyvtárához. Ez lehetővé teszi a kód zökkenőmentes módosítását anélkül, hogy újra kellene létrehozni a képet. A FLASK_DEBUG változó azt mondja flask run, hogy fejlesztési módban fusson.
6. lépés: Az alkalmazás újjáépítése és futtatása
Írja be a következő parancsot a terminálba a Compose fájl újjáépítéséhez:
docker compose upshell7. lépés: Frissítse az alkalmazást
Most, hogy az alkalmazásához bind mountot használ, módosíthatja a kódot, és automatikusan láthatja a változásokat anélkül, hogy újra kellene építenie a képet.
Írj egy új üdvözlő tesztet az app.py fájlba.
return 'Hello from Docker! I was here {} times.\n'.format(count)pythonFrissítse a böngészőt, hogy ellenőrizze, hogy a módosítások végrehajtásra kerültek-e.

8. lépés: egyéb parancsok
A --help opció felsorolja a rendelkezésre álló Docker Compose parancsokat:
docker compose --helpshellA Docker Compose háttérben történő futtatásához hozzáadhatja a -d argumentumot:
docker compose up -dshellA down opcióval eltávolíthatók az összes konténer. A --volumes opció a Redis konténer által használt köteteket törli.
docker compose down --volumesshell