Files
Sean 483a2b88fd 部署文档定期更新
部署文档定期更新
2026-08-22 20:36:37 +08:00

279 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 手把手教你用 Docker 部署 Python
![手把手教你用 Docker 部署 Python](https://assets.xuanyuan.me/docker/blog/docker-python.png)
*分类: Docker部署教程 | 标签: python,docker,部署教程 | 发布时间: 2025-10-03 07:06:23*
> 本文介绍了通过Docker部署Python的全流程,包括从轩辕镜像查看、下载Python镜像(含多种拉取方式),到以快速部署、挂载本地项目、docker-compose管理三种方式部署容器,还涵盖安装第三方库、构建自定义镜像的进阶实践及常见问题解决办法。
## 🧰 准备工作
若你的系统尚未安装 Docker,请先一键安装:
### Linux Docker & Docker Compose 一键安装
一键安装配置脚本(推荐方案):
该脚本支持多种 Linux 发行版,支持一键安装 Docker、Docker Compose 并自动配置轩辕镜像访问支持源。
```bash
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
```
备用地址:
```bash
bash <(wget -qO- https://get.xuanyuan.me/docker.sh)
```
---
### 手把手教你用 Docker 部署 Python
Python 是一门应用广泛的语言,常见于数据分析、AI、Web 开发等场景。通过 Docker 部署 Python,可以做到快速安装、环境隔离、跨平台运行。下面我们基于 **轩辕镜像** 来完整演示 Python 在 Docker 中的部署方法。
#### 1、查看 Python 镜像详情
你可以在 轩辕镜像 中找到 Python 镜像页面:
👉 https://xuanyuan.cloud/r/library/python
在镜像页面中,会看到多种拉取方式,下面我们逐一说明。
#### 2、下载 Python 镜像
##### 2.1 使用轩辕镜像拉取
```bash
docker pull docker.xuanyuan.run/library/python:3.12
```
##### 2.2 拉取后改名
```bash
docker pull docker.xuanyuan.run/library/python:3.12 \
&& docker tag docker.xuanyuan.run/library/python:3.12 python:3.12 \
&& docker rmi docker.xuanyuan.run/library/python:3.12
```
这样后续就可以直接用官方标准名 `python:3.12`。
##### 2.3 使用免登录方式拉取(推荐)
```bash
docker pull xxx.xuanyuan.run/library/python:3.12
```
带重命名的完整命令:
```bash
docker pull xxx.xuanyuan.run/library/python:3.12 \
&& docker tag xxx.xuanyuan.run/library/python:3.12 python:3.12 \
&& docker rmi xxx.xuanyuan.run/library/python:3.12
```
##### 2.4 官方直连方式
如果网络能直连 Docker Hub,可以直接:
```bash
docker pull python:3.12
```
##### 2.5 查看是否拉取成功
```bash
docker images
```
输出类似:
```
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.12 9a2c9eabc123 2 weeks ago 1.02GB
```
#### 3、部署 Python 容器
下面演示三种方式:快速部署 → 挂载项目 → docker-compose 管理。
##### 3.1 快速部署(最简方式)
适合测试、运行交互式 Python 环境:
```bash
docker run -it --name py-test python:3.12
```
说明:
- `-it`:进入交互式终端
- `--name py-test`:容器名称
- `python:3.12`:使用 Python 3.12 镜像
进入后会看到 Python REPL:
```python
Python 3.12.5 (main, Sep 14 2024, 10:15:00)
>>> print("Hello from Xuanyuan Python!")
Hello from Xuanyuan Python!
```
退出:输入 `exit()` 或 `Ctrl+D`。
##### 3.2 挂载本地项目(推荐方式)
适合实际项目开发,将宿主机代码挂载到容器内。
第一步:准备目录
```bash
mkdir -p /data/python-app
cd /data/python-app
```
第二步:写一个测试程序
```bash
echo 'print("Hello from Xuanyuan Python App!")' > app.py
```
第三步:启动容器并挂载目录
```bash
docker run -it --name py-app \
-v /data/python-app:/app \
-w /app \
python:3.12 python app.py
```
说明:
- `-v /data/python-app:/app`:挂载宿主机目录到容器
- `-w /app`:指定容器内工作目录
- `python app.py`:执行程序
输出应为:
```
Hello from Xuanyuan Python App!
```
##### 3.3 使用 docker-compose 部署(适合企业级项目)
第一步:创建项目目录
```bash
mkdir -p /data/py-compose
cd /data/py-compose
```
第二步:准备应用
写一个 `main.py`:
```python
print("Python running in Docker with docker-compose!")
```
第三步:编写 `docker-compose.yml`
```yaml
version: '3'
services:
python-app:
image: python:3.12
container_name: python-service
working_dir: /app
volumes:
- ./app:/app
command: python main.py
restart: always
```
目录结构:
```
/data/py-compose
├─ docker-compose.yml
└─ app
└─ main.py
```
第四步:启动服务
```bash
docker compose up -d
```
查看状态
```bash
docker compose ps
```
查看日志
```bash
docker compose logs -f
```
输出:
```
python-service | Python running in Docker with docker-compose!
```
#### 4、进阶实践
##### 4.1 安装第三方库
运行交互式容器,使用 pip 安装:
```bash
docker run -it --name py-pandas python:3.12 bash
pip install pandas
```
或者在项目目录添加 `requirements.txt`:
```
flask
requests
```
然后容器启动时自动安装:
```bash
docker run -it -v /data/python-app:/app -w /app python:3.12 pip install -r requirements.txt
```
##### 4.2 构建自定义 Python 镜像
在项目中写一个 `Dockerfile`:
```dockerfile
FROM python:3.12
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
```
构建镜像:
```bash
docker build -t my-python-app .
```
运行:
```bash
docker run -it --name py-custom my-python-app
```
#### 5、常见问题
##### 5.1 进入容器后 Python 环境丢失?
默认进入是 `/bin/bash`,需要手动执行 `python`。也可以直接:
```bash
docker exec -it py-app python
```
##### 5.2 如何持久化依赖环境?
- 使用 `requirements.txt + pip install`
- 或者构建自定义镜像(见上文 4.2)
##### 5.3 容器内时区不对?
加 `-e TZ=Asia/Shanghai`:
```bash
docker run -it -e TZ=Asia/Shanghai python:3.12
```
##### 5.4 如何运行 Flask / Django Web 项目?
以 Flask 为例,在 `app.py`:
```python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello Flask from Docker!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
```
运行容器:
```bash
docker run -d --name py-flask -p 5000:5000 \
-v /data/python-app:/app -w /app \
python:3.12 pip install flask && python app.py
```
访问 `http://服务器IP:5000` 即可。
#### 结尾
至此,你已经掌握了 Python 在 Docker 中的部署全流程:
- 拉取镜像(轩辕镜像 / 官方)
- 快速运行 Python 环境
- 挂载项目目录运行代码
- 使用 docker-compose 管理服务
- 构建自定义镜像和运行 Web 应用
对于初学者,可以先尝试「快速部署」和「挂载目录」;对于工程师,推荐使用「docker-compose」或「自定义镜像」来管理依赖和部署。
👉 在实践中遇到问题,可以通过 `docker logs 容器名` 查看日志,或参考 Python 官方文档。