怎么使用Docker Compose搭建简单的Python网络应用程序


这篇文章主要介绍“怎么使用DockerCompose搭建简单的Python网络应用程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用DockerCompose搭建简单的Python网络应用程序”文章能帮助大家解决问题。在这个页面上,你可以建立一个简单的Python网络应用程序,运行在Docker Compose上。该应用使用Flask框架,并在Redis中维护一个点击计数器。虽然样本使用了Python,但即使你不熟悉它,这里展示的概念也应该是可以理解的。(官网教程翻译)请确保你已经安装了Docker Engine和Docker Compose。你不需要安装Python或Redis,因为两者都是由Docker镜像提供的。定义应用程序的依赖。为该项目创建一个目录。在你的项目目录下创建一个名为 app.py 的文件,并把以下内容粘贴进去:在这个例子中,redis 是应用程序网络中的redis容器的主机名。我们使用Redis的默认端口,6379。处理瞬时错误 注意 get_hit_count 函数的编写方式。这个基本的重试循环让我们在redis服务不可用时多次尝试我们的请求。这在应用程序上线的时候很有用,而且如果Redis服务需要在应用程序的生命周期内随时重启,这也使我们的应用程序更具弹性。在一个集群中,这也有助于处理节点之间的瞬间连接中断。在你的项目目录下创建另一个名为 requirements.txt 的文件,并将以下内容粘贴进去:在这一步,你要写一个Dockerfile来构建一个Docker镜像。这个镜像包含了Python应用程序所需的所有依赖项,包括Python本身。在你的项目目录中,创建一个名为 Dockerfile 的文件并粘贴以下内容:这告诉Docker:从Python 3.7镜像开始构建一个镜像。设置工作目录为 /code。设置 flask 命令使用的环境变量。安装gcc和其他依赖项复制 requirements.txt 并安装Python依赖项。给镜像添加元数据,描述容器在5000端口上监听将项目中的当前目录.复制到镜像中的工作目录.。将容器的默认命令设置为 flask run。在你的项目目录下创建一个名为 docker-compose.yml 的文件,并粘贴以下内容:这个 Compose 文件定义了两个服务:webredisweb 服务使用一个从当前目录下的 Dockerfile 文件构建的镜像。然后它将容器和主机绑定到暴露的端口8000上。本例服务使用Flask网络服务器的默认端口,即5000。redis 服务使用了一个从Docker Hub仓库中拉取的公共Redis镜像。在你的项目目录中,通过运行 docker-compose up 来启动你的应用程序。Compose会拉取一个Redis镜像,为你的代码构建一个镜像,并启动你定义的服务。在这种情况下,代码在构建时被静态地复制到镜像中。在浏览器中输入http://localhost:8000/,可以看到应用程序正在运行。如果你在本地Linux上使用Docker、Docker Desktop for Mac或Docker Desktop for Windows,那么网络应用现在应该在你的Docker守护主机上监听8000端口。将你的网络浏览器指向http://localhost:8000,找到`Hello World` 消息。如果这还没有解决,你也可以试试http://127.0.0.1:8000。你应该在你的浏览器中看到一条消息说:3. 刷新页面。这个数字应该是递增的。切换到另一个终端窗口,并输入 docker image ls 来列出本地图像。在这一点上,列出图像应该返回 redisweb。你可以用 docker inspect 检查镜像。停止应用程序,可以在第二个终端中的项目目录中运行 docker-compose down,或者在启动应用程序的原始终端中点击CTRL+C。在你的项目目录中编辑 docker-compose.yml,为免费云主机域名 web 服务添加一个绑定挂载。新的 volumes 键将主机上的项目目录(当前目录)挂载到容器内的 /code,允许你即时修改代码,而不需要重建镜像。environment 键设置 FLASK_ENV 环境变量,它告诉 flask run 在开发模式下运行,并在代码变化时重新加载。这种模式只应在开发中使用。在你的项目目录下,输入 docker-compose up,用更新的Compose文件构建应用程序,并运行它。再次在网络浏览器中检查 Hello World 消息,并刷新以看到计数的增加。共享文件夹、卷和绑定挂载如果你的项目在 Users 目录之外(cd ~),那么你需要共享你正在使用的Dockerfile文件和volume的驱动器或位置。如果你得到运行时的错误,表明找不到应用文件,卷挂载被拒绝,或服务无法启动,请尝试启用文件或驱动器共享。卷挂载需要在 C:Users(Windows)或 /Users(Mac)之外的项目共享驱动器,而且对于Docker Desktop for Windows上任何使用Linux容器的项目都是必需的。如果你在旧的Windows操作系统上使用Oracle VirtualBox,你可能会遇到这个VB故障单中描述的共享文件夹的问题。较新的Windows系统符合Docker Desktop for Windows的要求并且不需要VirtualBox。因为应用程序代码现在是用volume装入容器的,所以你可以对其代码进行修改,并立即看到变化,而不需要重建镜像。改变 app.py 中的问候语,并保存它。例如,将 Hello World!的信息改为 Hello from Docker!。在你的浏览器中刷新该应用程序。问候语应该被更新,而计数器应该仍然在递增。如果你想在后台运行你的服务,你可以向 docker-compose up 传递 -d 标志(用于 “分离 “模式),并使用docker-compose ps 来查看当前正在运行的内容:docker-compose 的运行命令允许你为你的服务运行一次性的命令。例如,看看 web 服务有哪些环境变量可用:参见 docker-compose --help 以查看其他可用的命令。如果你用 docker-compose up -d 启动了Compose,一旦你完成了你的服务,就停止它们:你可以用 down 命令来关闭一切,完全删除容器。通过 --volumes,也可以删除Redis容器所使用的数据卷:关于“怎么使用DockerCompose搭建简单的Python网络应用程序”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: vue中v-if和v-for优先级是什么

本文小编为大家详细介绍“vue中v-if和v-for优先级是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue中v-if和v-for优先级是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 在vue2中,v-for的优先级…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/24 20:51
下一篇 03/24 20:52

相关推荐