在 Kylin 上部署 Python 应用,最标准、最干净的做法就是用 Docker 把应用“打包成镜像”

用 Flask(轻量 Web 框架)​ 为例,从 0 到上线,并实现连接 MySQL​ 这个需求。


一、准备一个最简单的 Python 应用

在 Kylin 任意目录(例如 /opt/python-app)创建项目:

sudo mkdir -p /opt/python-app
cd /opt/python-app

1️⃣ 应用代码 app.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello from Python on Kylin + Docker!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

2️⃣ 依赖文件 requirements.txt

flask==2.3.3

二、编写 Dockerfile(核心)

这是 Python 应用容器化的灵魂文件

FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 拷贝依赖文件
COPY requirements.txt .

# 安装依赖(国内建议加镜像)
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 拷贝应用代码
COPY . .

# 暴露端口
EXPOSE 5000

# 启动命令
CMD ["python", "app.py"]

📌 为什么用 python:3.10-slim

✅ 体积小

✅ 兼容 Kylin(x86 / ARM 都支持)

✅ 企业最常用


三、构建并运行 Python 容器

1️⃣ 构建镜像

在 /opt/python-app目录执行:

sudo docker build -t kylin-python-app .

2️⃣ 运行容器

sudo docker run -d \
  --name python-web \
  -p 5000:5000 \
  kylin-python-app

3️⃣ 验证

浏览器访问:

http://<Kylin_IP>:5000

✅ 看到 Hello from Python on Kylin + Docker!即成功


四、进阶:Python 应用连接 MySQL(实战重点)

这是90%项目的刚需

1️⃣ 新增 MySQL 驱动

修改 requirements.txt

flask==2.3.3
pymysql

2️⃣ 修改 app.py

import pymysql
from flask import Flask

app = Flask(__name__)

@app.route("/db")
def db_test():
    conn = pymysql.connect(
        host="mysql",      # Docker 网络中的服务名
        user="root",
        password="YourStrongPassword123!",
        database="mysql"
    )
    with conn.cursor() as cursor:
        cursor.execute("SELECT VERSION()")
        version = cursor.fetchone()
    conn.close()
    return f"MySQL Version: {version[0]}"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

五、使用 Docker 网络打通 Python + MySQL

⚠️ 关键:必须让 Python 容器能解析 mysql这个主机名

1️⃣ 创建自定义网络

sudo docker network create app-net

2️⃣ 启动 MySQL(加入网络)

sudo docker run -d \
  --name mysql \
  --network app-net \
  -p 3306:3306 \
  -v /opt/mysql/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=YourStrongPassword123! \
  mysql:latest

3️⃣ 启动 Python(加入同一网络)

sudo docker run -d \
  --name python-web \
  --network app-net \
  -p 5000:5000 \
  kylin-python-app

✅ 访问:

http://<Kylin_IP>:5000/db

👉 你将看到 MySQL 版本号,说明 Python ↔ MySQL 完美连通


六、生产级推荐:用 Docker Compose(强烈建议)

真实项目中,不要用一条条 docker run,而是用 docker-compose.yml

docker-compose.yml

version: "3.8"

services:
  mysql:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: YourStrongPassword123!
    volumes:
      - /opt/mysql/data:/var/lib/mysql
    networks:
      - app-net

  python:
    build: .
    container_name: python-web
    ports:
      - "5000:5000"
    depends_on:
      - mysql
    networks:
      - app-net

networks:
  app-net:
    driver: bridge

一键启动

sudo docker compose up -d

✅ 一条命令,Python + MySQL 全部就绪


七、Kylin + Python 常见坑提醒

问题

解决方案

ARM 版 Kylin

用 python:3.10-slim没问题

pip 慢

加 -i https://pypi.tuna.tsinghua.edu.cn/simple

连不上 MySQL

检查 Docker 网络 & 防火墙

端口冲突

ss -lntp查占用

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐