51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

本地项目打包成Docker镜像

前言 {#前言}

最近想这个QQ机器人接入 AI,让它在QQ中使用,但是写好python后部署服务器发现python版本不一致的问题,导致没办法部署,所以这里使用docker来解决这个问题

下面演示将Python项目用docker部署

生成 requirements.txt {#生成-requirements-txt}

这个文件是生成python依赖的文件

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

407cdc29-05cf-4fc1-91af-c3a41b12afeb

Dockerfile编写 {#Dockerfile编写}

Dockerfile按照自己的需求去写

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

镜像生成 {#镜像生成}

项目终端下执行

|---------------------------------| | docker build -t qqbot . |

  • 完整就是 docker build -t imagname dockerfilepath
  • imagename 镜像名字 可以自定义
  • dockerfilepath 就是dockerfile所在文件夹位置 当前目录为 .

de14b757-b940-47cf-994a-63aa25c9d8b8

生成成功是可以在image中看见的

52bd9468-9d3d-4f49-ad83-fd8dade456de

运行镜像 {#运行镜像}

|-------------------------------| | docker run --rm qqbot |

94d6ba14-366c-46f5-9e33-29715c6b01ef

以上步骤其实已经成功了,但是前提是你在服务器打包的,下面步骤将接上面的步骤上传打包后的文件到服务器运行

生成镜像文件 {#生成镜像文件}

|------------------------------------------------------------------------| | # 查看镜像的ID docker image ls # 打包指定ID镜像 docker save 镜像ID > 镜像文件昵称 |

执行完后项目下面就会多出一个叫qqbot.tar的文件

031bb9bd-acdd-42e8-a1d3-030732932eab

上传tar到服务器 {#上传tar到服务器}

这一步就是把上一步生成的qqbot.tar上传到服务器里面 具体步骤省略

加载镜像 {#加载镜像}

在上传的qqbot.tar目录下执行

|----------------------------------| | docker load -i qqbot.tar |

加标签 {#加标签}

给刚刚导入的镜像加入标签 不然就会在查看镜像列表的时候 PEPOSITORY和TAG显示为none

|----------------------------------------| | docker tag 镜像ID PEPOSITORY:TAG |

  • PEPOSITORY:自定义名字
  • TAG:自定义标签

004321a8-6a1a-425d-9794-314b41f21e4a

运行 {#运行}

docker run --rm PEPOSITORY:TAG

|------------------------------------| | docker run --rm qqbot:main |

2e991383-32e8-4017-873f-60952f1a7b90

docker命令 {#docker命令}

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | docker image ls 列出镜像 docker ps 列出正常运行 docker rm containerID 删除container docker rmi ImageID 删除image docker exec -it containerID bash 进入container docker run -d PEPOSITORY:TAG 后台模式启动 |

赞(1)
未经允许不得转载:工具盒子 » 本地项目打包成Docker镜像