将python项目用docker 部署到服务器上的全过程

任务描述

由于笔记本算力有限,要将python项目部署到服务器上。
在查阅了大量资料后,踩了无数坑后,今天记录一下全过程,希望对大家有帮助。

配置要求

  1. 需要部署的python项目
  2. 虚拟机/linus
  3. docker安装
  4. 服务器端口

大致流程

 1.Docker的打包

项目最终结构:

 目录结构

docker_test
├── Dockerfile
├── pythonproject
│││ └── tset.py
│││ └── 其他配置文件
└── requirements.txt

生成 requirements.txt

cd进入到main.py目录
或者直接在pycharm 的Terminal下执行

pipenv lock --requirements > requirements.txt
//或者
pip freeze >> requirements.txt

得到requirement文件

pycharm下Terminal窗口

dockFile的编写

建议直接在linus下编写

# 将官方 Python 运行时用作父镜像
FROM python:3.8.2
# 将工作目录设置为 /pythonproject
WORKDIR ./pythonproject
# 将当前目录内容复制到位于 /pythonproject 中的容器中
ADD . .
# 安装 requirements.txt 中指定的任何所需软件包
RUN pip install -r requirements.txt
# 在容器启动时运行 tset.py
CMD ["python3", "./pythonproject/tset.py"]

镜像的生成

在linus下,cd到Dockerfile文件下

docker build -t cowsay .
详细信息:
docker build -t imagename Dockerfilepath 
# imagename:镜像名称,自定义
# Dockerfilepath:Dockerfile 所在文件夹名称,当前名录为 “.” 

生成镜像

docker build -t imagename Dockerfilepath 

运行镜像

docker run --rm cowsay
--rm : 跑完就删除(因为有时候container比较占空间)

在这里给大家总结一下一些docker命令
docker image ls 列出镜像
docker ps 列出container(正在运行的)(可以加 -a 列出所有的)
docker rm containerID 删除container
docker rmi ImageID 删除image
docker exec -it containerID bash 进入container

IMAGE.tar 的生成(Image打包)

docker save f660ca2347c0 > image.tar
//输出镜像文件到tar文件中
660ca2347c0是Image的ID号,可以通过 docker image ls 查看

至此,我们已经得到IMAGE.tar了
接下来,把它上传上服务器并运行

2.服务器部分

传输文件(非ssh)

scp IMAGE.tar hostname@服务器地址: path

scp命令详解

 登录服务器

ssh 账号@服务器地址

如何登录服务器

docker载入tar文件

docker image load <IMAGE.tar

docker run!(快结束啦!)

解压完以后就能看到docker镜像了! 然后正常执行docker run操作就可以啦!
(还是把命令贴出来看一下把)

docker run --rm cowsay
//cowsay只是一个自定义名字

可以参考docker run

猜你喜欢

转载自blog.csdn.net/weixin_41951954/article/details/130006410