Python?Flask?+?Redis?程序練習(xí)
兩個(gè)容器,一個(gè)flask-demo,一個(gè)是redis-server
在一個(gè)自定義網(wǎng)絡(luò)bridge,相互ping,不需要知道ip,只用名字就能ping通
1.程序準(zhǔn)備
準(zhǔn)備一個(gè)Python文件,名字為 app.py 內(nèi)容如下:
提供一個(gè)web服務(wù),可以訪問地址,返回一個(gè)Hello Container World!..并且記錄訪問的次數(shù)。
from flask import Flask from redis import Redis import os import socket app = Flask(__name__) redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379) @app.route('/') def hello(): ? ? redis.incr('hits') ? ? return f"Hello Container World! I have been seen {redis.get('hits').decode('utf-8')} times and my hostname is {socket.gethostname()}.\n"
準(zhǔn)備一個(gè)Dockerfile
FROM python:3.9.5-slim RUN pip install flask redis && \ ? ? groupadd -r flask && useradd -r -g flask flask && \ ? ? mkdir /src && \ ? ? chown -R flask:flask /src USER flask COPY app.py /src/app.py WORKDIR /src ENV FLASK_APP=app.py REDIS_HOST=redis EXPOSE 5000 CMD ["flask", "run", "-h", "0.0.0.0"]
2.鏡像準(zhǔn)備
構(gòu)建flask
鏡像,準(zhǔn)備一個(gè)redis
鏡像。
$ docker image pull redis $ docker image build -t flask-demo . $ docker image ls REPOSITORY ? TAG ? ? ? ? ?IMAGE ID ? ? ? CREATED ? ? ? ? ? ? ?SIZE flask-demo ? latest ? ? ? 4778411a24c5 ? About a minute ago ? 126MB python ? ? ? 3.9.5-slim ? c71955050276 ? 8 days ago ? ? ? ? ? 115MB redis ? ? ? ?latest ? ? ? 08502081bff6 ? 2 weeks ago ? ? ? ? ?105MB
3.創(chuàng)建一個(gè)docker bridge
$ docker network create -d bridge demo-network 8005f4348c44ffe3cdcbbda165beea2b0cb520179d3745b24e8f9e05a3e6456d $ docker network ls NETWORK ID ? ? NAME ? ? ? ? ? DRIVER ? ?SCOPE 2a464c0b8ec7 ? bridge ? ? ? ? bridge ? ?local 8005f4348c44 ? demo-network ? bridge ? ?local 80b63f711a37 ? host ? ? ? ? ? host ? ? ?local fae746a75be1 ? none ? ? ? ? ? null ? ? ?local $
4.創(chuàng)建redis container
創(chuàng)建一個(gè)叫 redis-server
的container
,連到demo-network
上
$ docker container run -d --name redis-server --network demo-network redis 002800c265020310231d689e6fd35bc084a0fa015e8b0a3174aa2c5e29824c0e $ docker container ls CONTAINER ID ? IMAGE ? ? COMMAND ? ? ? ? ? ? ? ? ?CREATED ? ? ? ? STATUS ? ? ? ? PORTS ? ? ?NAMES 002800c26502 ? redis ? ? "docker-entrypoint.s…" ? 4 seconds ago ? Up 3 seconds ? 6379/tcp ? redis-server
5.創(chuàng)建flask container
注意:--env REDIS_HOST=redis-server 這樣app.py中的REDIS_HOST就可以訪問redis服務(wù)了!
$ docker container run -d --network demo-network --name flask-demo --env REDIS_HOST=redis-server -p 5000:5000 flask-demo
6.查看頁面
打開瀏覽器訪問http://127.0.0.1:5000
應(yīng)該能看到類似下面的內(nèi)容,每次刷新頁面,計(jì)數(shù)加1
Hello Container World! I have been seen 36 times and my hostname is 925ecb8d111a.
7.總結(jié)
如果把上面的步驟合并到一起,成為一個(gè)部署腳本:
# prepare image docker image pull redis docker image build -t flask-demo . # create network docker network create -d bridge demo-network # create container docker container run -d --name redis-server --network demo-network redis docker container run -d --network demo-network --name flask-demo --env REDIS_HOST=redis-server -p 5000:5000 flask-demo
到此這篇關(guān)于Python Flask + Redis 程序練習(xí)的文章就介紹到這了,更多相關(guān)Python Flask + Redis 練習(xí)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python操作Redis數(shù)據(jù)庫的超詳細(xì)教程
- python?實(shí)現(xiàn)?redis?數(shù)據(jù)庫的操作
- python導(dǎo)入導(dǎo)出redis數(shù)據(jù)的實(shí)現(xiàn)
- 解決python-redis-lock分布式鎖的問題
- python3使用python-redis-lock解決并發(fā)計(jì)算問題
- python動(dòng)態(tài)網(wǎng)站爬蟲實(shí)戰(zhàn)(requests+xpath+demjson+redis)
- Python訪問Redis的詳細(xì)操作
- Python利用Redis計(jì)算經(jīng)緯度距離案例
相關(guān)文章
Python 抓取微信公眾號(hào)賬號(hào)信息的方法
搜狗微信搜索提供兩種類型的關(guān)鍵詞搜索,一種是搜索公眾號(hào)文章內(nèi)容,另一種是直接搜索微信公眾號(hào)。這篇文章主要介紹了Python 抓取微信公眾號(hào)賬號(hào)信息,需要的朋友可以參考下2019-06-06python爬蟲開發(fā)之使用Python爬蟲庫requests多線程抓取貓眼電影TOP100實(shí)例
這篇文章主要介紹了python爬蟲開發(fā)之使用Python爬蟲庫requests多線程抓取貓眼電影TOP100實(shí)例,需要的朋友可以參考下2020-03-03python模塊hashlib(加密服務(wù))知識(shí)點(diǎn)講解
在本篇文章里小編給大家分享的是關(guān)于python模塊hashlib(加密服務(wù))知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2019-11-11Django商城項(xiàng)目注冊功能的實(shí)現(xiàn)
注冊功能是網(wǎng)頁項(xiàng)目必備的需求,本文提供了一個(gè)Django項(xiàng)目實(shí)現(xiàn)注冊功能的示例,有此需求的同學(xué)可以參考下2021-06-06關(guān)于Python正則表達(dá)式 findall函數(shù)問題詳解
在寫正則表達(dá)式的時(shí)候總會(huì)遇到不少的問題,本文講述了Python正則表達(dá)式中 findall()函數(shù)和多個(gè)表達(dá)式元組相遇的時(shí)候會(huì)出現(xiàn)的問題2018-03-03Python 人工智能老照片修復(fù)算法學(xué)習(xí)
老舊或者破損的照片如何修復(fù)呢?本文主要介紹了一個(gè)非常不錯(cuò)的照片恢復(fù)開源項(xiàng)目:Bringing-Old-Photos-Back-to-Life。感興趣的小伙伴快來看看呀2021-11-11