DocUA commited on
Commit
d6e94b1
·
1 Parent(s): 8a98931

Нові налаштування

Browse files
Files changed (4) hide show
  1. Dockerfile +19 -0
  2. app.py +82 -0
  3. scripts/init.sql → init.sql +0 -0
  4. requirements.txt +2 -0
Dockerfile CHANGED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM mysql:8.0.22
2
+
3
+ # Встановлення змінних середовища
4
+ ENV MYSQL_ROOT_PASSWORD=root_password
5
+ ENV MYSQL_DATABASE=test_db
6
+ ENV MYSQL_USER=test_user
7
+ ENV MYSQL_PASSWORD=test_password
8
+
9
+ # Створення необхідних директорій
10
+ RUN mkdir -p /docker-entrypoint-initdb.d
11
+
12
+ # Копіювання SQL скрипту для ініціалізації
13
+ COPY init.sql /docker-entrypoint-initdb.d/
14
+
15
+ # Відкриття порту MySQL
16
+ EXPOSE 3306
17
+
18
+ # Команда для запуску MySQL при старті контейнера
19
+ CMD ["mysqld"]
app.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import gradio as gr
3
+ import mysql.connector
4
+ from mysql.connector import Error
5
+
6
+ def check_mysql_status():
7
+ try:
8
+ # Спроба підключення до MySQL
9
+ connection = mysql.connector.connect(
10
+ host="localhost",
11
+ user="test_user",
12
+ password="test_password",
13
+ database="test_db"
14
+ )
15
+
16
+ if connection.is_connected():
17
+ db_info = connection.get_server_info()
18
+ cursor = connection.cursor()
19
+ cursor.execute("SELECT DATABASE();")
20
+ record = cursor.fetchone()
21
+
22
+ # Перевірка таблиці test
23
+ cursor.execute("SELECT * FROM test LIMIT 5;")
24
+ test_data = cursor.fetchall()
25
+
26
+ # Список баз даних
27
+ cursor.execute("SHOW DATABASES;")
28
+ databases = cursor.fetchall()
29
+
30
+ # Формування HTML з результатами
31
+ html = f"""
32
+ <div style="font-family: Arial, sans-serif; padding: 20px;">
33
+ <h2>MySQL Сервер успішно запущено! 🚀</h2>
34
+ <p><strong>Статус сервера:</strong> Активний</p>
35
+ <p><strong>Версія MySQL:</strong> {db_info}</p>
36
+ <p><strong>Поточна база даних:</strong> {record[0]}</p>
37
+
38
+ <h3>Доступні бази даних:</h3>
39
+ <ul>
40
+ {"".join([f"<li>{db[0]}</li>" for db in databases])}
41
+ </ul>
42
+
43
+ <h3>Дані з таблиці test:</h3>
44
+ <table border="1" cellpadding="5">
45
+ <tr>
46
+ <th>numbers</th>
47
+ <th>words</th>
48
+ </tr>
49
+ {"".join([f"<tr><td>{row[0]}</td><td>{row[1]}</td></tr>" for row in test_data])}
50
+ </table>
51
+
52
+ <h3>Інформація для підключення:</h3>
53
+ <ul>
54
+ <li><strong>Хост:</strong> URL вашого Space</li>
55
+ <li><strong>Порт:</strong> 3306</li>
56
+ <li><strong>Користувач:</strong> test_user</li>
57
+ <li><strong>Пароль:</strong> test_password</li>
58
+ <li><strong>База даних:</strong> test_db</li>
59
+ </ul>
60
+ </div>
61
+ """
62
+
63
+ connection.close()
64
+ return html
65
+ else:
66
+ return "<h2 style='color: red;'>Помилка: Не вдалося підключитися до MySQL!</h2>"
67
+
68
+ except Error as e:
69
+ return f"<h2 style='color: red;'>Помилка: {e}</h2>"
70
+
71
+ # Створення інтерфейсу Gradio
72
+ with gr.Blocks() as demo:
73
+ gr.HTML("<h1>MySQL Server 8.0.22 для навчальних цілей</h1>")
74
+ gr.HTML("<p>Цей додаток показує статус вашого MySQL сервера.</p>")
75
+
76
+ refresh_btn = gr.Button("Перевірити статус MySQL")
77
+ output = gr.HTML(check_mysql_status())
78
+
79
+ refresh_btn.click(fn=check_mysql_status, inputs=[], outputs=output)
80
+
81
+ # Запуск інтерфейсу
82
+ demo.launch()
scripts/init.sql → init.sql RENAMED
File without changes
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ gradio==3.50.2
2
+ mysql-connector-python==8.1.0