在 Kylin 上用Docker部署 Python 应用
本文详细介绍了在Kylin系统上使用Docker部署Python应用的完整流程。首先创建包含Flask框架的简单Python应用,通过Dockerfile构建镜像并运行容器。重点讲解了Python连接MySQL的配置方法,包括修改requirements.txt添加pymysql驱动、调整应用代码,以及通过Docker网络实现容器间通信。文章推荐使用Docker Compose编排Python和M
在 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 |
用 |
|
pip 慢 |
加 |
|
连不上 MySQL |
检查 Docker 网络 & 防火墙 |
|
端口冲突 |
|
更多推荐
所有评论(0)