# Kuidas kasutada Docker Compose'i mitme konteineriga rakenduste jaoks

Compose lihtsustab rakenduste skaleerimist ja kasutuselevõttu Dockeris, automatiseerides **konteinerite haldamise**. Meie juhendis käsitletakse põhjalikult Docker Compose’i seadistamist ja kasutamist, et muuta teie rakenduste kasutuselevõtu protsess sujuvamaks.

## Mis on Docker Compose?

Docker Compose’i kasutatakse rakenduste haldamiseks ja konteineriarenduse tõhususe suurendamiseks. Konfiguratsioonid määratletakse ühes YAML-failis, mis muudab rakenduste koostamise ja skaleerimise lihtsaks. Docker Compose’i kasutatakse sageli kohaliku keskkonna seadistamiseks. Samas võib see olla ka osa **pideva integreerimise ja pideva väljastamise (CI/CD) töövoost**. Arendajad saavad määratleda konkreetse konteineriversiooni testimiseks või konkreetseteks torujuhtme etappideks. See lihtsustab probleemide tuvastamist ja vigade parandamist enne rakenduse tootmisse viimist.

## Docker Compose’i nõuded

**Konteinerite koordineerimiseks** on vaja nii Docker Engine’i kui ka Docker Compose’i. Veendu, et su süsteemis on installitud üks järgmistest:

- **Docker Engine ja Docker Compose**: neid saab installida eraldi käivitatavate failidena.
- **Docker Desktop**: graafilise kasutajaliidesega arenduskeskkond, mis sisaldab Docker Engine’i ja Docker Compose’i.

Tip Vaata meie juhenditest, kuidas installida Docker Compose erinevatele operatsioonisüsteemidele:

- [Docker Compose’i installimine Ubuntu’s](https://www.ionos.com/et-ee/digitalguide/server/seadistused/docker-compose-ubuntu-operatsioonisuesteemis/)
- [Docker Compose’i installimine macOS-ile](https://www.ionos.com/et-ee/digitalguide/server/seadistused/docker-compose-macis/)
- [Docker Compose’i installimine Windowsis](https://www.ionos.com/et-ee/digitalguide/server/seadistused/docker-composei-installimine-windowsis/)

## Juhend Docker Compose’i kasutamiseks samm-sammult

Järgnevalt näitame, kuidas kasutada Docker Compose’i lihtsa **Python-veebirakenduse** puhul, mis kasutab külastuste loendurit. Selleks kasutame Python Flask-raamistikku ja Redis-mälupõhist andmebaasi. Teil pole vaja Pythoni ega Redist installida, kuna need on saadaval Docker-piltidena.

### 1. samm: Projekti failide loomine

Käivita terminal ja loo projektile uus kaust.

```shell
$ mkdir composedemo
```

Mine sellesse kataloogi.

```shell
$ cd composedemo
```

Loo selles kaustas fail *app.py* ja lisa sellesse järgmine kood:

```python
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)
```

Meie seadistuses kasutame Redis-teenusega ühenduse loomiseks hostinime `redis` ja vaikimisi porti `6379`. Lisaks määrame, et funktsioon `get_hit_count()` peaks teenusega mitu korda ühendust proovima. Seda soovitatakse juhul, kui Redis ei pruugi rakenduse käivitamisel kohe kättesaadav olla või kui töötamise ajal võivad esineda ajutised ühendusprobleemid.

Loo fail *requirements.txt*, milles on kirjas sõltuvused:

```plaintext
flask
redis
```

### 2. samm: Dockerfile’i seadistamine

**Dockerfile’i** kasutatakse Docker-pildi loomiseks. See määrab kindlaks kõik sõltuvused, mida Python-rakendus vajab.

```shell
# 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"]
```

Me anname Dockerile käsu kasutada Python 3.7-i kujutist. Lisaks seadistame **Flask-käsu** jaoks vajalikud keskkonnamuutujad. `apk add` abil installime olulised sõltuvused, sealhulgas gcc. Et konteiner saaks jälgida porti 5000, määrame `EXPOSE`. `COPY` abil kopeerime praeguse kausta sisu konteineri töökausta */code*. Lõpuks valime konteineri vaikimisi käskuks `flask run`.

Veendu, et Dockerfile salvestati ilma faililaiendita, kuna mõned tekstiredaktorid lisavad automaatselt laiendi *.txt*.

### 3. samm: Loo YAML-fail

Failis ***docker-compose.yml*** seadistame teenused „redis“ ja „web“.

```yaml
version: "3.9"
services:
    web:
        build: .
        ports:
            - "8000:5000"
    redis:
        image: "redis:alpine"
```

Veebiteenus on loodud Dockerfile’i abil loodud Docker-pildi abil. See seob konteineri ja host-arvuti pordiga 8000, samal ajal kui **Flask-veebiserver** töötab pordil 5000. Redis-pilt aga laaditakse alla otse ametlikust Docker Hubist.

### 4. samm: Käivita rakendus Compose’iga

Käivita rakendus oma projektikausta kaudu.

```shell
docker compose up
```

Ava oma brauseris aadress *http://localhost:8000*. Võid sisestada ka *aadressi http://127.0.0.1:8000*.

Te peaksite nägema järgmist teadet:

[![Image: Docker Compose Application: Output the number of visits in the browser](https://www.ionos.com/et-ee/digitalguide/fileadmin/_processed_/d/1/csm_docker-compose-hit-counter_f6e8af7148.webp "Docker Compose Application: Output the number of visits in the browser")](https://www.ionos.com/et-ee/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-compose-hit-counter.png) You’ll see the number of times you have visited the browser. Värskenda lehekülge. Vaadete arv peaks nüüd olema kasvanud ühe võrra.

[![Image: Calling the Docker Compose application again](https://www.ionos.com/et-ee/digitalguide/fileadmin/_processed_/7/8/csm_docker-compose-hit-counter-updated_58c6be39f6.webp "Calling the Docker Compose application again")](https://www.ionos.com/et-ee/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-compose-hit-counter-updated.png) The number of visits increased by 1. Sulge rakendus järgmiselt:

```shell
$ docker compose down
```

Rakenduse töötamise lõpetamiseks piisab, kui vajutad terminalis klahvikombinatsiooni `Ctrl` + `C`.

### 5. samm: Lisa sümboliline mount

Kui soovid veebiteenusele lisada **bind-mounti**, saad seda teha failis *docker-compose.yml*.

```yaml
version: "3.9"
services:
    web:
        build: .
        ports:
            - "8000:5000"
        volumes:
            - .:/code
        environment:
            FLASK_DEBUG: "true"
    redis:
        image: "redis:alpine"
```

Jaotises **„Volumes“** määrame praeguse projektikausta ühendamise konteineri sees asuva kataloogiga */code*. See võimaldab koodi sujuvalt muuta, ilma et oleks vaja pilti uuesti luua. Muutuja `FLASK_DEBUG` annab käsu `flask run` töötada arendusrežiimis.

### 6. samm: Rakenduse uuesti koostamine ja käivitamine

Sisesta terminali järgmine käsk, et Compose-fail uuesti koostada:

```shell
docker compose up
```

### 7. samm: Rakenduse uuendamine

Nüüd, kui kasutate oma rakenduses bind-mounti, saate muuta koodi ja näha muudatusi automaatselt, ilma et peaksite pilti uuesti ehitama.

Kirjuta faili ***app.py*** uus tervitustest.

```python
return 'Hello from Docker! I was here {} times.\n'.format(count)
```

Värskenda brauserit, et kontrollida, kas muudatused on rakendunud.

[![Image: Docker Compose application: modified welcome text](https://www.ionos.com/et-ee/digitalguide/fileadmin/_processed_/9/3/csm_docker-compose-hit-counter-text-modified_a210964afe.webp "Docker Compose application: modified welcome text")](https://www.ionos.com/et-ee/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-compose-hit-counter-text-modified.png) The welcome text in the Python application has been modified ### 8. samm: muud käsud

`--help` valikuvõimalust loetlevad Docker Compose’i käsud:

```shell
docker compose --help
```

Et käivitada Docker Compose taustal, võid lisada argumendi `-d`:

```shell
docker compose up -d
```

Kasuta `down`, et eemaldada kõik konteinerid. Käsk `--volumes` kustutab Redis-konteineri poolt kasutatavad mahud.

```shell
docker compose down --volumes
```

Tip Dockeriga alustamiseks vaadake meie [Docker-õpetust](https://www.ionos.com/et-ee/digitalguide/server/seadistused/dockeri-juhend-paigaldamine-ja-esimesed-sammud/) ja Docker-käskude ülevaadet.


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/server/seadistused/docker-composei-juhend/](https://www.ionos.com/et-ee/digitalguide/server/seadistused/docker-composei-juhend/) for AI/LLM consumption.