Загрузить файлы в «z1»
This commit is contained in:
parent
b5c74fc09e
commit
9492f2de5a
7
z1/Dockerfile
Normal file
7
z1/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
z1/app.py
Normal file
58
z1/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
z1/docker-compose.yml
Normal file
33
z1/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
z1/prepare-app.sh
Normal file
26
z1/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
z1/remove-app.sh
Normal file
13
z1/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
z1/requirements.txt
Normal file
3
z1/requirements.txt
Normal file
@ -0,0 +1,3 @@
|
||||
flask
|
||||
psycopg2-binary
|
||||
|
24
z1/start-app.sh
Normal file
24
z1/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"
|
Loading…
Reference in New Issue
Block a user