Docker学习笔记20

news/2024/10/31 4:17:25/

案例2:创建一个python的web应用,使用Flask,将访问次数记在redis中,通过web首页显示访问次数。

第一步:创建一个工程目录:

mkdir pythondir
cd pythondir

第二步:创建一个web应用:

[root@node1 pythondir]# cat app.py
from flask import Flask
from redis import Redisapp = Flask(__name__)
redis = Redis(host='redis', port=6379)@app.route('/')
def hello():redis.incr('hits')return 'Hello world! I have been see %s times.' % redis.get('hits')if __name__ == "__main__":app.run(host="0.0.0.0", debug=True)
[root@node1 pythondir]# cat requirements.txt
flask
redis

在容器镜像中安装flask和redis应用,需求软件的安装列表。软件需求列表。

在一些应用软件中都有requirements.txt文件。

如果没有安装flask和redis,我们是不能import导入模块。

flask和redis是需要安装到容器镜像中的。

第三步:创建一个Dockerfile文件,创建容器镜像:

[root@node1 pythondir]# cat Dockerfile
FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python app.py

说明:这个不需要基础镜像,直接python环境就可以。

第四步:创建docker-compose.yaml文件:

[root@node1 pythondir]# cat docker-compose.yaml
version: '2'
services:web:build: .ports:- "5000:5000"volumes:- .:/codedepends_on:- redisredis:image: redis:latest

说明:

1)version2版本支持空格,version3版本支持tab键。tab键四个空格。

2)web依赖redis,也就是depends_on,先启动redis,然后再启动web。

第五步:运行:

docker-compose up
[root@node1 pythondir]# docker-compose up
Creating network "pythondir_default" with the default driver
Creating pythondir_redis_1 ... done
Creating pythondir_web_1   ... done
Attaching to pythondir_redis_1, pythondir_web_1
redis_1  | 1:C 06 Jul 2023 10:56:02.498 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1  | 1:C 06 Jul 2023 10:56:02.498 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1  | 1:C 06 Jul 2023 10:56:02.498 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1  | 1:M 06 Jul 2023 10:56:02.499 * monotonic clock: POSIX clock_gettime
redis_1  | 1:M 06 Jul 2023 10:56:02.500 * Running mode=standalone, port=6379.
redis_1  | 1:M 06 Jul 2023 10:56:02.500 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1  | 1:M 06 Jul 2023 10:56:02.500 # Server initialized
redis_1  | 1:M 06 Jul 2023 10:56:02.500 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis_1  | 1:M 06 Jul 2023 10:56:02.500 * Ready to accept connections
web_1    |  * Serving Flask app "app" (lazy loading)
web_1    |  * Environment: production
web_1    |    WARNING: This is a development server. Do not use it in a production deployment.
web_1    |    Use a production WSGI server instead.
web_1    |  * Debug mode: on
web_1    |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
web_1    |  * Restarting with stat
web_1    |  * Debugger is active!
web_1    |  * Debugger PIN: 982-279-484
web_1    | 192.168.17.1 - - [06/Jul/2023 10:56:08] "GET / HTTP/1.1" 200 -
web_1    | 192.168.17.1 - - [06/Jul/2023 10:56:08] "GET /favicon.ico HTTP/1.1" 404 -
web_1    | 192.168.17.1 - - [06/Jul/2023 10:56:11] "GET / HTTP/1.1" 200 -
web_1    | 192.168.17.1 - - [06/Jul/2023 10:56:12] "GET / HTTP/1.1" 200 -
web_1    | 192.168.17.1 - - [06/Jul/2023 10:56:13] "GET / HTTP/1.1" 200 -

从输出信息中,我们可以看到我通过浏览器进行了页面访问。

[root@node1 pythondir]# docker-compose up -d
Creating network "pythondir_default" with the default driver
Creating pythondir_redis_1 ... done
Creating pythondir_web_1   ... done
[root@node1 pythondir]#

 

第六步:访问:

在笔记本电脑上的浏览器进行访问:

可以看到访问次数发生了变化。


http://www.ppmy.cn/news/759305.html

相关文章

Web3与AI:数字时代安全隐私交易的未来

AI+web3=下一个热门赛道? 在数字时代的浪潮中,Web3和人工智能(AI)成为了两个备受关注的前沿技术。Web3代表着下一代互联网,强调去中心化、透明和用户控制的特点。而人工智能作为一种智能化的技…

windows无法更新

如果Windows无法更新,有几种可能的原因: 网络连接问题:请确保您的计算机能够连接到互联网。 磁盘空间问题:Windows更新需要足够的磁盘空间才能进行。如果您的磁盘空间不足,可以尝试清理磁盘空间或增加磁盘空间来解决问…

ipad air 2 使用itunes恢复更新出现3014解决方法

昨天恢复ipad出现3014的错误,造成无法开机,我换了台电脑也不行,根据苹果官方的说法是网络和USB端口的问题,一直不知道什么问题,在网上找了很多资料也解决不了,网上的资料主要是两类: 一类是修改…

5种方法帮你轻松解决iPhone系统无法更新系统的问题

iOS系统的更新是苹果手机用户常见的操作之一,它可以带来新功能、性能优化和漏洞修复等好处。但有时我们也会遇到iOS无法更新的情况,我们可以大致归纳为五种原因。 对于第一种情况,即设备不支持最新软件,苹果公司通常在发布新的iOS…

c++滑雪以及电(深度理解)

C记忆化搜索是一种优化算法,用于加快递归函数的执行速度。该方法通过保存已计算的结果,避免重复计算以提高程序性能。 先看题目:滑雪 给定一个 R 行 C 列的矩阵,表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的…

itunes不识别ipad解决方法

windows7可以识别ipad,在我的电脑中显示出一个相机的图标,但是在itunes里面怎么都无法识别的情况!!今天,这个问题有了终极解决办法!!打开设备管理器【打开方法不解释】,找到移动设备…

deepin更新失败_无法更新,更新失败

MyHomeMyHome-PC:~$ sudo apt-get update&&sudo apt-get dist-upgrade [sudo] MyHome 的密码: E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁 E: dpkg 被中断,您必须手工运行 ‘s…

iPhone无法更新,一直卡住在“验证更新中”,如何处理?

文章来源:https://www.reneelab.com.cn/cant-update-iphone.html 目录 如何解决iPhone无法更新,一直卡住在“验证更新中”?方法1.按压电源键,锁屏之后再唤醒屏幕方法2.将iPhone强制重启方法3.通过iTunes恢复手机 使用都叫兽™iOS…