finish zadanie1
This commit is contained in:
parent
1d20a76005
commit
dbcb53e4b5
52
z1/README.md
52
z1/README.md
@ -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` |
|
||||||
@ -7,12 +7,40 @@ services:
|
|||||||
- "80:80"
|
- "80:80"
|
||||||
volumes:
|
volumes:
|
||||||
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
- ./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;']
|
command: [nginx-debug, '-g', 'daemon off;']
|
||||||
|
restart: unless-stopped
|
||||||
db:
|
db:
|
||||||
build:
|
build:
|
||||||
context: ./backend/db
|
context: ./backend/db
|
||||||
ports:
|
volumes:
|
||||||
- "27017:27017"
|
- mongo-data:/data/db
|
||||||
|
restart: unless-stopped
|
||||||
backend:
|
backend:
|
||||||
build:
|
build:
|
||||||
context: ./backend
|
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:
|
||||||
12
z1/fluent-bit/fluent-bit.conf
Normal file
12
z1/fluent-bit/fluent-bit.conf
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[INPUT]
|
||||||
|
Name forward
|
||||||
|
|
||||||
|
[OUTPUT]
|
||||||
|
Name stdout
|
||||||
|
Match *
|
||||||
|
[FILTER]
|
||||||
|
Name record_modifier
|
||||||
|
# для всех лог-сообщений
|
||||||
|
Match *
|
||||||
|
# оставить только поле log
|
||||||
|
Whitelist_key log
|
||||||
@ -1,3 +1,6 @@
|
|||||||
|
user nginx;
|
||||||
|
worker_processes 1;
|
||||||
|
error_log /var/log/nginx/error.log warn;
|
||||||
events {
|
events {
|
||||||
worker_connections 1024;
|
worker_connections 1024;
|
||||||
}
|
}
|
||||||
@ -5,6 +8,19 @@ http {
|
|||||||
upstream backend {
|
upstream backend {
|
||||||
server backend:5000;
|
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 {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
listen [::]:80;
|
listen [::]:80;
|
||||||
|
|||||||
4
z1/prepare-app.sh
Normal file
4
z1/prepare-app.sh
Normal 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
4
z1/remove-app.sh
Normal 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
3
z1/start-app.sh
Normal 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
2
z1/stop-app.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
docker compose stop
|
||||||
Loading…
Reference in New Issue
Block a user