首先,确保你已经安装了以下工具:
- Dokcer
步骤1:编写你的 Python 程序
-
在目录下创建一个名为
app.py
的文件,并添加以下代码:from flask import Flask, render_template import mysql.connector app = Flask(__name__) def get_data_from_database(): cnx = mysql.connector.connect( host="java-demo-db-mysql.ns-7otl3mb2.svc", user="root", password="l9h8f24b", database="test_db" ) cursor = cnx.cursor() cursor.execute("SELECT * FROM test") data = cursor.fetchall() cursor.close() cnx.close() return data @app.route('/') def index(): data = get_data_from_database() return render_template('index.html', data=data) if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
-
在项目目录下创建一个名为
requirements.txt
的文件,以列出应用程序所需的依赖。
Flask
mysql-connector-python
-
在项目目录中创建一个名为
templates
的文件夹,并在其中创建一个名为index.html
的文件。将以下内容添加到index.html
:<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Data from MySQL</title> </head> <body> <h1>Data from MySQL</h1> <table> <tr> <th>Column1</th> <th>Column2</th> <th>Column3</th> </tr> {% for row in data %} <tr> <td>{{ row[0] }}</td> <td>{{ row[1] }}</td> <td>{{ row[2] }}</td> </tr> {% endfor %} </table> </body> </html> ``` 请将 `Column1`、`Column2` 和 `Column3` 替换为您要显示的实际列名。
步骤2:创建 Docker 镜像
-
在项目的根目录下,创建一个名为
Dockerfile
的文件。这个文件将包含构建 Docker 镜像所需的指令。以下是一个简单的示例 Dockerfile:FROM python:3.8 WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 5000 CMD ["python", "app.py"]
步骤3:构建 Docker 镜像
-
在包含
Dockerfile
的目录中运行以下命令来构建 Docker 镜像:docker build -t python-demo .
步骤4:推送Docker镜像
-
将创建的Docker镜像推送到Docker仓库,如Docker Hub或者私有仓库。假设您已经登录到Docker仓库,使用以下命令推送镜像
-
首先标记Docker镜像,在推送镜像之前,需要为其添加一个标签,以便 Docker 知道将其推送到哪个仓库。运行以下命令为镜像添加标签:
docker tag your-image-name your-dockerhub-username/your-repo-name:your-tag
将
your-image-name
替换为你的本地镜像名称,your-dockerhub-username
替换为你的 Docker Hub 用户名,your-repo-name
替换为你在 Docker Hub 上要创建的仓库名称,your-tag
替换为你为镜像设置的标签(例如:latest)。例如:
docker tag python-demo damager6666/python-demo:v1
-
接下来推送Docker镜像,使用以下命令将镜像推送到 Docker Hub:
docker push your-dockerhub-username/your-repo-name:your-tag
将
your-dockerhub-username
、your-repo-name
和your-tag
替换为实际的值。例如:docker push damager6666/python-demo:v1
-
步骤5:登陆 Sealos
- 进入 Sealos 官网
步骤6:打开 「数据库」 应用
步骤7:创建数据库
-
点击新建数据库
-
基础配置:
- 集群类型:mysql
- 集群名称 : demo-db
- CPU(推荐):1 Core
- 内存(推荐):1 G
- 实例数:1
- 存储容量: 1 Gi
-
点击 部署集群
步骤8:配置数据库
-
点击一键连接到数据库执行以下语句:
-
创建 test_db 数据库
create database test_db;
-
创建 test 表
CREATE TABLE `name_info` ( `id` int(11) NOT NULL, `name` varchar(12) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) );
-
插入数据
insert into test values (1,'Sealos');
-
步骤9:打开 「应用管理」 应用
步骤 10:新建应用
- 在 「应用管理」 中,点击「新建应用」来创建一个新的应用。
步骤11:应用部署
-
基础配置:
- 应用名称(自定义):python-demo
- 镜像名:damager6666/python-demo:v1
- CPU(推荐):1 Core
- 内存(推荐):1 G
-
部署模式:
- 实例数(自定义):1
-
网络配置:
-
容器暴露端口:5000
-
外网访问:开启
-
步骤12:部署应用
步骤13:访问应用
- 点击「应用管理」查看,当应用的 STATUS 由 Pending 变为 Running,则表明该应用已成功启动。
- 当 STATUS 为 Running,即可直接访问外网地址。
-
在浏览器上输入外网地址,可以访问到刚刚存入到 MySQL 中的数据,表示程序已经成功 Sealos 上
https://mkqreaqfgwac.cloud.sealos.io/