我们写好python程序后,如果要在服务器上运行,你会怎么做呢?今天我就来和大家聊聊这个话题。我们在使用传统物理机或云服务器部署项目时,会存在项目部署速度慢、资源浪费、迁移难、扩展性低等痛点。使用Docker部署项目的优势包括:高效利用系统资源、更快的服务启动、一致的环境、更方便的迁移。今天给大家介绍一下Docker部署一个Python项目的大致流程。1.Dockerfile描述文件Dockerfile是放在项目根目录下的描述文件。您可以使用Docker命令基于该文件构建镜像。常用指令包括:FROM用于定义基础镜像MAINTAINER指定维护者信息,可以省略不写RUN与“安装命令”连接,可用于安装工具依赖包ADD将宿主文件,与解压COPY和ADD命令功能相同,但不会执行解压操作WORKDIR用于切换工作目录VOLUME用于配置宿主机和容器目录映射EXPOSE配置项目在容器中暴露的端口号。CMD指定容器启动后运行的命令。例如,您可以运行命令来启动项目。写一个Dockerfile放在项目的根目录下,打包镜像文件,运行镜像容器测试。为了演示方便,这里以一个简单的Flask工程为例进行说明2-1项目开发fromflaskimportFlask#安装依赖#pip3install-Uflaskapp=Flask(__name__)@app.route('/')defindex():返回“测试容器部署!”if__name__=='__main__':app.run(host='0.0.0.0',port=8888)#浏览器访问测试#http://127.0.0.1:8888/项目开发完成,Dockerfile即可本地测试通过后写入注意“EXPOSE”命令暴露的端口号与入口文件中定义的端口号一致#DockerfileFROMcentos:7.9.2009RUNyummakecachefast;RUNyuminstallpython3-develpython3-pip-yRUNpip3install-ihttps://pypi.douban.com/simpleflaskCOPYmain.py/optWORKDIR/optEXPOSE8888CMD["python3","main.py"]2-3构建镜像#在当前文件夹下,根据Dockerfile构建镜像#镜像名称:xag/my_flask_web#--no-cache:镜像不使用旧缓存builddockerbuild--no-cache-t"xag/my_flask_web".2-4运行镜像容器使用dockerrun命令基于镜像运行一个容器其中-d:表示容器在后台运行,不是基于在前台--name:用于执行容器别名-p:用于配置宿主机和容器之间的端口映射#-d:后台运行#宿主机(9999)在容器中映射8888(上面的Dockerfile中有暴露端口8888)dockerrun-d--nameflask_web-p9999:8888xag/my_flask_web2-5测试一下最后在浏览器中通过宿主机暴露的端口号9999访问项目其实Dockerfile很灵活,支持ARG/ENV设置环境变量,VOLUME命令挂载目录,ENTRYPOINT配置启动程序and参数等以上就是本次分享的全部内容。如果觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,送“J”,获取海量学习资料。或者去编程学习网了解更多编程技术知识。
