准备工作
-
确认NAS已安装Docker
- NAS:应用商店或命令行安装 Docker
-
项目文件要求
- 确保项目目录包含以下文件:
PJFile/ ├── app/ # 项目代码目录 │ └── main.py # 入口文件 ├── requirements.txt # 依赖列表 └── Dockerfile # Docker镜像构建文件
- 确保项目目录包含以下文件:
方法一:通过Dockerfile直接部署
步骤 1:上传项目到NAS共享文件夹
- 通过 FileStation(群晖)或 SMB/FTP 将
PJFile
文件夹上传到 NAS 的共享目录(如/volume1/docker
)
步骤 2:通过SSH连接NAS
- 启用SSH服务(群晖示例):
- 进入「控制面板」→「终端机和SNMP」→ 勾选「启用SSH服务」→ 设置端口(默认22)
- 连接NAS(以Windows为例):
ssh admin@你的NAS_IP -p 22 # 示例: ssh admin@192.168.1.100
- 输入管理员密码登录
步骤 3:定位到项目目录
# 进入共享文件夹(群晖、绿联默认路径)
cd /volume1/docker/PJFile
# 确认文件存在
ls -l
# 应看到 Dockerfile、requirements.txt 等文件
步骤 4:构建并运行Docker镜像
# 构建镜像(需管理员权限)
sudo docker build -t my-python-app:1.0 -f Dockerfile .
# 运行容器(后台模式 + 端口映射)
sudo docker run -d --name textweb-container -p 8099:8099 my-python-app:1.0
步骤 5:验证部署
- 访问服务:
- 浏览器打开
http://你的NAS_IP:4000
- 浏览器打开
- 查看容器状态:
sudo docker ps
方法二:本地打包镜像上传部署
步骤 1:本地构建Docker镜像
- 在本地开发机操作:
# 进入项目目录 cd PJFile # 构建镜像 docker build -t my-python-app:latest . # 验证镜像 docker images
步骤 2:导出镜像为.tar文件
# 导出镜像包(Windows/macOS/Linux通用)
docker save -o pjfile-python-app.tar my-python-app:latest
步骤 3:上传.tar文件到NAS
-
图形化上传(推荐新手):
- 通过 FileStation、网页拖拽或 SMB 共享将
.tar
文件上传到 NAS 的共享目录(如/volume1/docker
)
- 通过 FileStation、网页拖拽或 SMB 共享将
-
命令行上传(可选):
scp pjfile-python-app.tar admin@NAS_IP:/volume1/docker/
步骤 4:在NAS加载镜像
-
通过SSH连接NAS(参考方法一步骤2)
-
加载镜像:
# 进入镜像所在目录 cd /volume1/docker # 加载镜像 sudo docker load -i pjfile-python-app.tar # 验证镜像 sudo docker images
步骤 5:运行容器
# 直接启动容器
sudo docker run -d --name my-app -p 4000:80 my-python-app:latest
# 或通过图形界面操作(群晖示例):
# 1. 打开「Container Manager」→「镜像」→ 找到镜像
# 2. 点击「启动」→ 设置端口映射 → 确认
两种方法对比
场景 | 方法一(Dockerfile部署) | 方法二(镜像上传部署) |
---|---|---|
适用情况 | 需要频繁更新代码 | 镜像稳定,需快速部署 |
网络依赖 | 需上传完整项目文件 | 仅需上传.tar文件 |
构建速度 | 依赖NAS性能(可能较慢) | 本地构建更快 |
安全性 | 暴露Dockerfile和源码 | 仅分发镜像,保护源码 |
常见问题解决
-
权限不足
- 所有命令前加
sudo
- 或切换为 root 用户:
sudo -i
- 所有命令前加
-
端口冲突
- 修改运行命令的端口号:
sudo docker run -d --name my-app -p 5000:80 my-python-app:latest
- 修改运行命令的端口号:
-
镜像加载失败
- 检查镜像架构是否匹配(ARM/x86_64):
# 在 Dockerfile 首行指定平台 FROM --platform=linux/amd64 python:3.9-slim
- 检查镜像架构是否匹配(ARM/x86_64):
-
依赖安装失败
- 在 Dockerfile 中添加系统依赖安装步骤:
RUN apt-get update && apt-get install -y libpq-dev
- 在 Dockerfile 中添加系统依赖安装步骤:
操作总结
- 直接部署Dockerfile:适合开发调试阶段,需频繁修改代码
- 镜像上传部署:适合生产环境,快速分发稳定版本
按需选择部署方式,即可轻松将Python项目部署到NAS的Docker环境中!