Загрузить файлы в «z1»

This commit is contained in:
Vladyslav Korzun 2025-03-17 22:58:30 +00:00
parent b5c74fc09e
commit 9492f2de5a
7 changed files with 164 additions and 0 deletions

7
z1/Dockerfile Normal file
View 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
z1/app.py Normal file
View 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
z1/docker-compose.yml Normal file
View 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
z1/prepare-app.sh Normal file
View 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
z1/remove-app.sh Normal file
View 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
z1/requirements.txt Normal file
View File

@ -0,0 +1,3 @@
flask
psycopg2-binary

24
z1/start-app.sh Normal file
View 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"