前言 {#前言}
最近想这个QQ机器人接入 AI,让它在QQ中使用,但是写好python后部署服务器发现python版本不一致的问题,导致没办法部署,所以这里使用docker来解决这个问题
下面演示将Python项目用docker部署
生成 requirements.txt {#生成-requirements-txt}
这个文件是生成python依赖的文件
|-------------------------------------------------------------------------------------------|
| pipenv lock --requirements > requirements.txt //或者 pip freeze >> requirements.txt
|
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所在文件夹位置 当前目录为 .
生成成功是可以在image中看见的
运行镜像 {#运行镜像}
|-------------------------------|
| docker run --rm qqbot
|
以上步骤其实已经成功了,但是前提是你在服务器打包的,下面步骤将接上面的步骤上传打包后的文件到服务器运行
生成镜像文件 {#生成镜像文件}
|------------------------------------------------------------------------|
| # 查看镜像的ID docker image ls # 打包指定ID镜像 docker save 镜像ID > 镜像文件昵称
|
执行完后项目下面就会多出一个叫qqbot.tar的文件
上传tar到服务器 {#上传tar到服务器}
这一步就是把上一步生成的qqbot.tar上传到服务器里面 具体步骤省略
加载镜像 {#加载镜像}
在上传的qqbot.tar目录下执行
|----------------------------------|
| docker load -i qqbot.tar
|
加标签 {#加标签}
给刚刚导入的镜像加入标签 不然就会在查看镜像列表的时候 PEPOSITORY和TAG显示为none
|----------------------------------------|
| docker tag 镜像ID PEPOSITORY:TAG
|
- PEPOSITORY:自定义名字
- TAG:自定义标签
运行 {#运行}
docker run --rm PEPOSITORY:TAG
|------------------------------------|
| docker run --rm qqbot:main
|
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 后台模式启动
|