Docker Orchestration Kodutöö¶
Navigeerimine
Kasuta paremal olevat sisukorda kiireks navigeerimiseks ↗️
Moodul: Docker Orkestratsioon
Tähtaeg: Järgmise nädala algus
Hindamine: 120 punkti
Ülesanne 1: Full-stack rakenduse ehitamine (100 punkti)¶
Ülesande kirjeldus¶
Looge töötav full-stack veebirakendus Docker Compose'iga, mis demonstreerib multi-container orchestration põhimõtteid.
Nõuded¶
Arhitektuur (40 punkti)¶
Rakendus peab koosnema neljast teenusest:
- Frontend - veebiserver (Nginx + HTML/JS)
- Backend - API server (Python/Node.js)
- Andmebaas - PostgreSQL
- Cache - Redis
Funktsionaalsus (30 punkti)¶
- Frontend näitab andmeid andmebaasist
- Backend pakub REST API endpoint'e
- Redis cache'ib andmebaasi päringuid
- Kõik teenused suhtlevad omavahel
Konfiguratsioon (20 punkti)¶
- Environment variables
.env
failis - Named volumes andmete säilitamiseks
- Correct service dependencies (
depends_on
) - Proper port mappings
Dokumentatsioon (10 punkti)¶
- README.md käivitamisjuhistega
- Arhitektuuri kirjeldus
- API endpoint'ide dokumentatsioon
Näidis arhitektuur¶
Minimaalsed endpoint'id¶
Backend peab pakkuma:
- GET /api/health
- API tervise kontroll
- GET /api/users
- kasutajate loetelu
- POST /api/users
- uue kasutaja lisamine
Näited ja template'id¶
docker-compose.yml näide¶
HTML frontend näide (frontend/index.html)¶
```html
User Management
```text
SQL init script näide (database/init.sql)¶
```sql CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(200) );
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com'), ('Jane Smith', 'jane@example.com'); ```bash
Esitamine¶
Git repository sisaldab:
- docker-compose.yml
- Kõik vajalikud source failid
- .env.example
(ilma paroolideta)
- README.md
Testimine:
Projekt peab käivituma käskudega:
bash
git clone [your-repo]
cd [repo-name]
cp .env.example .env
docker-compose up -d
bash
Näited ja vihje'd¶
docker-compose.yml starter¶
```yaml version: '3.8'
services: web: image: nginx:alpine ports: - "8080:80" volumes: - ./frontend:/usr/share/nginx/html depends_on: - api
api: build: ./backend environment: - DB_PASSWORD=${DB_PASSWORD} depends_on: - database # TODO: lisa Redis dependency
database: image: postgres:13 environment: - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
# TODO: lisa Redis teenus
volumes: postgres_data: ```text
Backend starter (app.py)¶
```python from flask import Flask, jsonify import psycopg2 import os
app = Flask(name)
@app.route('/api/health') def health(): return jsonify({"status": "OK"})
@app.route('/api/users') def get_users(): # TODO: implementeeri andmebaasi ühendus # Vihje: kasutage psycopg2.connect() # host="database", user="postgres", password=os.getenv('DB_PASSWORD') pass
if name == 'main': app.run(host='0.0.0.0', port=5000) ```text
Frontend starter (index.html)¶
```html
My Application
```text
Database setup (init.sql)¶
```sql CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(200) );
INSERT INTO users (name, email) VALUES ('Test User', 'test@example.com');
-- TODO: lisa rohkem test andmeid ```bash
Vihje'd:¶
- Alustage PostgreSQL ja lihtsa API'ga
- Redis lisage hiljem cache'iks
- Kasutage teenuste nimesid docker-compose.yml'is ühenduste jaoks
- Environment variables võtke .env failist
Ülesanne 2: Orkestreerimise mustrite lugemine (20 punkti)¶
Lugemine¶
Lugege läbi: https://www.12factor.net/
Ülesanne¶
Vastake järgmistele küsimustele (500-800 sõna):
-
Millised 12-factor printsiibid on teie Docker Compose projektis hästi rakendatud?
-
Millised printsiibid puuduvad või on halvasti implementeeritud teie projektis?
-
Kuidas muudaksite oma projekti, et see järgiks paremini 12-factor metodoloogiat?
Esitamine¶
Lisage vastused README.md faili lõppu.
Üldine esitamine¶
Repository link: [jagage minuga GitHub link]
Edu kodutööga! 🐳