前提,已经安装好docker了,docker的安装,请见另一篇博客
介绍一下需要运行的python项目结构,平时在pycharm里面只需要运行app.py文件即可
项目步骤如下:
1:创建一个上传到Centos系统的文件夹(名字随意)
docker_svnhook是要上传到Linux系统,生成Dokcer镜像的文件夹
这个文件夹下面有两个文件
一个是Dockerfile文件(没有后缀名)
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,就可以创建我们所需要的镜像
内容如下
# 使用官方的 Python 3.9 作为基础镜像 FROM python:3.9-slim# 设置工作目录 WORKDIR /code# 将 requirements.txt 复制到容器中 COPY /svnhook/requirements.txt .# 安装依赖项 RUN pip install --no-cache-dir -r requirements.txt# 将应用程序代码复制到容器中 COPY . .# 暴露应用程序运行的端口 EXPOSE 5000# 运行 Flask 应用程序 CMD ["python", "/code/svnhook/package/app.py"]
需要注意的是,如果工作目录设定好了以后,需要在CMD启动程序填入完成的路径,不然会报路径错误
一个svnhook文件夹(名字随意),包含了工程的代码,还有运行工程所需要的环境列表
package就是python项目的源码所在目录,直接复制过来
requirements.txt就是我们的依赖,生成方法如下
cmd命令进入工程目录,执行pip freeze > requirements.txt
会在该目录下生成一个requirements.txt文件,会把我们整个环境中的包都列出来,我们自己也可以看看多了那些事不需要的包,或者缺了那些,用以下的格式补进去就可以了
2:上传到linux环境,生成镜像
2.1:用ftp把文件上传到虚拟机系统的某个路劲,如果文件太大了,可以压缩后再上传
可以先在虚拟机创建一个文件夹
mkdir svnhoos
2.2进入docker_svnhooks文件夹
2.3:创建镜像
执行命令:docker build -t svnhooks .
svnhooks 为创建的镜像名称,. 表示当前目录(docker_svnhooks)
2.4:查看镜像是否创建成功
docker images
看到刚刚创建的svnhook的镜像,已经存在了
3:运行镜像,生成并启动容器
执行命令
docker run -it -p 5000:5000 --name svnhook svnhooks
-it:表示交互式终端的容器,非启动后立刻结束的容器,初始调试可以用这个,可以看到控制台输出内容,只是部署的话用 -d 后台运行
-p 5000:5000:表示将docker的5000端口,映射到Linux虚拟机的5000端口
也就是说,访问Linux虚拟机的5000端口,就是在访问docker容器的5000端口,这里因为我的工程暴露的端口是5000,所以我设的是5000
--name svnhook:给容器取个名字,嫌麻烦可以省去
svnhooks:容器是用哪个镜像启动的(一个容器,必须依赖一个镜像启动)
现在访问系统,只需要访问虚拟机的IP加端口即可
4:代码有改动需要重新部署
只需要把镜像删除后,再按照上面的步骤重新部署即可
5:删除镜像
5.1:先停止容器 ,用 docker ps 查看正在运行的容器
然后使用docker stop container id,就可以停止容器
5.2:删除容器
docker rm container id
5.3:删除镜像,先查看镜像 docker iamges
找到要删除的镜像后,执行:docker rmi image id
如果您希望强制删除镜像并且不想手动删除相关容器,可以使用 -f
选项:
docker rmi -f <image_name_or_id>
这样会强制删除镜像及所有依赖它的容器。请谨慎使用。
本篇文章有参考以下文章