finish zadanie1

This commit is contained in:
Pavel Umansky 2026-04-08 19:22:13 +02:00
parent 1d20a76005
commit dbcb53e4b5
8 changed files with 124 additions and 3 deletions

View File

@ -0,0 +1,52 @@
# Bank API
REST API pre základné bankové operácie postavené na Flask, MongoDB a Nginx.
## Architektúra
- **Nginx** — reverse proxy, statický frontend
- **Backend** — Flask + Gunicorn REST API
- **MongoDB** — databáza
- **Fluent Bit** — zber logov
## Požiadavky
- Docker
- Docker Compose
## Spustenie
```bash
chmod +x prepare-app.sh start-app.sh stop-app.sh remove-app.sh
./prepare-app.sh
./start-app.sh
```
Aplikácia bude dostupná na **http://localhost:80**
## Zastavenie
```bash
./stop-app.sh
```
Opätovné spustenie: `./start-app.sh` — dáta v databáze sa zachovajú.
## Odstránenie
```bash
./remove-app.sh
```
## API endpointy
Všetky endpointy prijímajú POST s JSON telom.
| Endpoint | Popis | Parametre |
|---|---|---|
| `/api/register` | Registrácia | `username`, `password` |
| `/api/add` | Vklad | `username`, `password`, `amount` |
| `/api/transfer` | Prevod | `username`, `password`, `to`, `amount` |
| `/api/balance` | Zostatok | `username`, `password` |
| `/api/take_loan` | Pôžička | `username`, `password`, `amount` |
| `/api/pay_loan` | Splátka | `username`, `password`, `amount` |

View File

@ -7,12 +7,40 @@ services:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- fluent-bit
logging:
# используемый драйвер логгирования
driver: "fluentd"
options:
# куда посылать лог-сообщения, необходимо что бы адрес
# совпадал с настройками плагина forward
fluentd-address: localhost:24224
# теги используются для маршрутизации лог-сообщений, тема
# маршрутизации будет рассмотрена ниже
tag: nginx.logs
command: [nginx-debug, '-g', 'daemon off;']
restart: unless-stopped
db:
build:
context: ./backend/db
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db
restart: unless-stopped
backend:
build:
context: ./backend
restart: unless-stopped
fluent-bit:
container_name: fluent-bit
image: fluent/fluent-bit
ports:
- 24224:24224
- 24224:24224/udp
volumes:
- ./fluent-bit/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf
restart: unless-stopped
volumes:
mongo-data:

View File

@ -0,0 +1,12 @@
[INPUT]
Name forward
[OUTPUT]
Name stdout
Match *
[FILTER]
Name record_modifier
# для всех лог-сообщений
Match *
# оставить только поле log
Whitelist_key log

View File

@ -1,10 +1,26 @@
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
events {
worker_connections 1024;
}
http {
upstream backend {
server backend:5000;
}
}
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main 'access_log $remote_addr "$request" '
'$status "$http_user_agent"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80 default_server;
listen [::]:80;

4
z1/prepare-app.sh Normal file
View File

@ -0,0 +1,4 @@
#!/bin/bash
docker network create app-network 2>/dev/null
docker volume create mongo-data 2>/dev/null
docker compose build

4
z1/remove-app.sh Normal file
View File

@ -0,0 +1,4 @@
#!/bin/bash
docker compose down --rmi all --volumes
docker volume rm mongo-data 2>/dev/null
docker network rm app-network 2>/dev/null

3
z1/start-app.sh Normal file
View File

@ -0,0 +1,3 @@
#!/bin/bash
docker compose up -d
echo "Aplikácia je dostupná na http://localhost:80"

2
z1/stop-app.sh Normal file
View File

@ -0,0 +1,2 @@
#!/bin/bash
docker compose stop