Загрузить файлы в «/»
This commit is contained in:
commit
29fd3fd99e
7
Dockerfile
Normal file
7
Dockerfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM python:3.9
|
||||||
|
WORKDIR /app
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install -r requirements.txt
|
||||||
|
COPY . .
|
||||||
|
CMD ["python", "app.py"]
|
||||||
|
|
58
app.py
Normal file
58
app.py
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
from flask import Flask, render_template, request, jsonify
|
||||||
|
import psycopg2
|
||||||
|
import os
|
||||||
|
|
||||||
|
app = Flask(__name__, template_folder="templates", static_folder="static")
|
||||||
|
|
||||||
|
# Подключение к БД
|
||||||
|
def get_db_connection():
|
||||||
|
conn = psycopg2.connect(
|
||||||
|
host="db",
|
||||||
|
database="mydatabase",
|
||||||
|
user="postgres",
|
||||||
|
password=os.getenv("POSTGRES_PASSWORD", "mysecretpassword")
|
||||||
|
)
|
||||||
|
return conn
|
||||||
|
|
||||||
|
# Главная страница с HTML
|
||||||
|
@app.route("/")
|
||||||
|
def home():
|
||||||
|
conn = get_db_connection()
|
||||||
|
cur = conn.cursor()
|
||||||
|
cur.execute("SELECT id, name FROM users;")
|
||||||
|
users = cur.fetchall()
|
||||||
|
cur.close()
|
||||||
|
conn.close()
|
||||||
|
return render_template("index.html", users=users)
|
||||||
|
|
||||||
|
# API для добавления пользователя
|
||||||
|
@app.route("/add_user", methods=["POST"])
|
||||||
|
def add_user():
|
||||||
|
name = request.form.get("name")
|
||||||
|
if name:
|
||||||
|
conn = get_db_connection()
|
||||||
|
cur = conn.cursor()
|
||||||
|
cur.execute("INSERT INTO users (name) VALUES (%s) RETURNING id;", (name,))
|
||||||
|
user_id = cur.fetchone()[0]
|
||||||
|
conn.commit()
|
||||||
|
cur.close()
|
||||||
|
conn.close()
|
||||||
|
return jsonify({"id": user_id, "name": name}), 201
|
||||||
|
return jsonify({"error": "Имя не может быть пустым"}), 400
|
||||||
|
|
||||||
|
# API для удаления пользователя
|
||||||
|
@app.route("/delete_user/<int:user_id>", methods=["POST"])
|
||||||
|
def delete_user(user_id):
|
||||||
|
conn = get_db_connection()
|
||||||
|
cur = conn.cursor()
|
||||||
|
cur.execute("DELETE FROM users WHERE id = %s RETURNING id;", (user_id,))
|
||||||
|
deleted = cur.fetchone()
|
||||||
|
conn.commit()
|
||||||
|
cur.close()
|
||||||
|
conn.close()
|
||||||
|
if deleted:
|
||||||
|
return jsonify({"message": "Пользователь удален"})
|
||||||
|
return jsonify({"error": "Пользователь не найден"}), 404
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app.run(host="0.0.0.0", port=5000, debug=True)
|
33
docker-compose.yml
Normal file
33
docker-compose.yml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "5000:5000"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=mysecretpassword
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres:13
|
||||||
|
volumes:
|
||||||
|
- pgdata:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=mysecretpassword
|
||||||
|
- POSTGRES_DB=mydatabase
|
||||||
|
|
||||||
|
pgadmin:
|
||||||
|
image: dpage/pgadmin4
|
||||||
|
ports:
|
||||||
|
- "8080:80"
|
||||||
|
environment:
|
||||||
|
- PGADMIN_DEFAULT_EMAIL=user@domain.com
|
||||||
|
- PGADMIN_DEFAULT_PASSWORD=SuperSecret
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pgdata:
|
||||||
|
|
26
prepare-app.sh
Normal file
26
prepare-app.sh
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Vytvárame virtuálnu sieť..."
|
||||||
|
docker network create app_network || true
|
||||||
|
|
||||||
|
echo "Vytvárame volume pre databázu..."
|
||||||
|
docker volume create pgdata || true
|
||||||
|
|
||||||
|
echo "Budujeme obrazy..."
|
||||||
|
docker-compose build
|
||||||
|
|
||||||
|
echo "Čakáme na spustenie databázy..."
|
||||||
|
sleep 5 # Dávame PostgreSQL čas na spustenie
|
||||||
|
|
||||||
|
echo "Vytvárame tabuľku 'users' v databáze..."
|
||||||
|
docker-compose up -d db # Spustíme iba databázový kontajner
|
||||||
|
sleep 3 # Počkáme, kým sa PostgreSQL spustí
|
||||||
|
|
||||||
|
docker exec $(docker-compose ps -q db) psql -U postgres -d mydatabase -c "
|
||||||
|
CREATE TABLE IF NOT EXISTS users (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
name TEXT NOT NULL
|
||||||
|
);"
|
||||||
|
|
||||||
|
echo "Príprava dokončená!"
|
13
remove-app.sh
Normal file
13
remove-app.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Odstraňujeme kontajnery..."
|
||||||
|
docker-compose down -v
|
||||||
|
|
||||||
|
echo "Odstraňujeme volume..."
|
||||||
|
docker volume rm pgdata
|
||||||
|
|
||||||
|
echo "Odstraňujeme virtuálnu sieť..."
|
||||||
|
docker network rm app_network
|
||||||
|
|
||||||
|
echo "Odstránenie dokončené!"
|
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
flask
|
||||||
|
psycopg2-binary
|
||||||
|
|
24
start-app.sh
Normal file
24
start-app.sh
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e # Zastaví vykonávanie pri chybe
|
||||||
|
|
||||||
|
echo "Spúšťame aplikáciu..."
|
||||||
|
|
||||||
|
# Určujeme, ktorý príkaz `docker compose` je dostupný
|
||||||
|
if command -v docker-compose &> /dev/null; then
|
||||||
|
COMPOSE_CMD="docker-compose"
|
||||||
|
elif command -v docker &> /dev/null && docker compose version &> /dev/null; then
|
||||||
|
COMPOSE_CMD="docker compose"
|
||||||
|
else
|
||||||
|
echo "❌ Chyba: docker-compose alebo docker compose nie sú nainštalované!"
|
||||||
|
echo "Prosím, nainštalujte docker-compose:"
|
||||||
|
echo "sudo apt update && sudo apt install docker-compose-plugin -y"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Spustenie kontajnerov
|
||||||
|
$COMPOSE_CMD up -d
|
||||||
|
|
||||||
|
# Výstup informácií
|
||||||
|
echo "✅ Aplikácia bola úspešne spustená!"
|
||||||
|
echo "🌍 Otvorte webovú aplikáciu: http://localhost:5000"
|
||||||
|
echo "🗂 Otvorte pgAdmin: http://localhost:8080"
|
5
stop-app.sh
Normal file
5
stop-app.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Zastavujeme kontajnery..."
|
||||||
|
docker-compose down
|
Loading…
Reference in New Issue
Block a user