# 项目打包
本地打包python项目依赖,前提已经配置好环境。
```bash
pip freeze>requirements.txt
```
## Linux发布
### 直接部署
在服务器原生环境下先配置安装相应的依赖后,再直接部署。
```bash
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -r requirements.txt
python3 app.py
```
### Docker部署
docker容器化部署需要一些准备工作,如服务器安装Docker,项目配置Dockerfile文件等。docker安装配置好之后继续。
创建Dockerfile。一个docker容器的运行基础是镜像,实际上镜像就是代码与运行环境打包生成的。docker创建镜像有三种方式,分别是基于已有容器创建、基于本地模板创建、dockerfIile创建,一般建议采用dockerfile创建方式。
步骤:
在项目根目录创建Dockerfile,编写执行脚本。
```dockerfile
#设置基础镜像
FROM python:3.7
#设置代码文件夹工作目录 /app
WORKDIR /app
#复制当前代码文件到容器中 /app
ADD . /app
#设置时间
#RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#安装所需的包,这里的requirements文件名需和项目生成的一致
RUN pip install --trusted-host mirrors.aliyun.com -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
#执行入口文件
CMD ["python", "app.py"]
```
打包上传至服务器,压缩和解压缩。
```bash
unzip app.zip
```
生成镜像。cd进项目根目录,app.py启动文件需要同Dockerfile放置在同一目录下,执行以下命令生成镜像,注意命令后的 ‘.’ 符号指的是在当前目录下执行创建,不要遗漏了该符号。创建会去执行下载基础镜像和各个依赖,需要等待一定时间。
```bash
docker build -t [image_name] .
```
启动容器。在启动容器时需要做一个端口映射,从宿主机指定端口映射容器端口,前一个为宿主机端口后一个为容器端口。
```bash
docker run --name [container_name] -d -p 9000:5000 [image_name]
```
额外辅助命令
```bash
#保存镜像
docker save container_id > path_dir
#导入本地镜像
docker load -i file.tar
#进入容器
docker exec -it container_name
#退出容器
exit
```