当前位置: 首页 > 科技观察

五分钟,教你用Docker部署一个Python应用!

时间:2023-03-14 12:36:26 科技观察

在传统物理机或云服务器上部署项目时存在一些痛点。例如:项目部署慢、资源浪费、迁移困难、扩展性低。使用Docker部署项目的优势包括:高效利用系统资源、更快的服务启动、一致的环境、更方便的迁移。本文将介绍Docker部署Python项目的大致流程。1.DockerfileDockerfile是放置在项目根目录下的一个描述文件,可以使用Docker命令基于该文件构建镜像。常用的命令有:FROM用于定义基础镜像MAINTAINER指定维护者信息,可以省略不写RUN和“安装命令”一起写,可用于安装工具依赖包ADD解压文件宿主机COPY和ADD命令的功能是一样的,只是不会进行解压操作。WORKDIR用于切换工作目录VOLUME配置宿主机与容器的目录映射EXPOSE配置暴露给容器中项目的端口号CMD指定容器启动后运行的命令。例如,您可以运行命令来启动项目。2、先看一下使用Docker部署应用的大致流程:开发一个项目,在本地进行测试。写一个Dockerfile放在项目的根目录下,打包镜像文件,运行镜像容器测试。为了演示方便,这里以一个简单的Flask工程为例进行说明。2-1项目开发fromflaskimportFlask#Installationdependencies#pip3install-Uflaskapp=Flask(__name__)@app.route('/')defindex():return"Testcontainerdeployment!"if__name__=='__main__':app.run(host='0.0.0.0',port=8888)#浏览器访问测试#http://127.0.0.1:8888/项目开发完成,Dockerfile即可本地测试通过后写的。2-2编写Dockerfile在项目根目录下创建一个Dockerfile,使用上面的指令编写描述脚本。需要注意的是,这里的“EXPOSE”命令暴露的端口号与入口文件中定义的端口号是一致的。#DockerfileFROMcentos:7.9.2009RUNyummakecachefast;RUNyuminstallpython3-develpython3-pip-yRUNpip3install-ihttps://img.ydisp.cn/news/20220901/25dubrptyvnflaskCOPYmain.py/optWORKDIR/optEXPOSE8888CMD["python3","main.py"]2-3构建镜像#在当前文件夹下,根据Dockerfile构建镜像#镜像名称:xag/my_flask_web#--no-cache:不使用旧缓存用于镜像构建dockerbuild--no-cache-t"xag/my_flask_web".2-4运行镜像容器使用dockerrun命令基于镜像运行一个容器,其中-d:表示容器运行在background,不基于前台--name:用来执行容器的别名-p:用来配置宿主机和容器之间的端口映射#-d:在后台运行#宿主机(9999)映射8888在容器(上面的Dockerfile暴露了8888端口)dockerrun-d--nameflask_web-p9999:8888xag/my_flask_web2-5测试一下最后在浏览器中访问pro通过主机暴露的端口号9999进行喷射。访问地址:http://127.0.0.1:9999/3。在总结文章中,通过一个简单的Web项目来说明使用Docker部署项目的大致流程。事实上,Dockerfile非常灵活。还支持ARG/ENV设置环境变量,VOlUME命令挂载目录,ENTRYPOINT配置启动程序和参数等,这部分大家可以根据官网的介绍自行扩展。https://docs.docker.com/engine/reference/builder/