欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?Flask?+?Redis?程序練習(xí)

 更新時(shí)間:2022年01月27日 08:55:58   作者:小葉柏杉  
這篇文章主要給大家分享Python?Flask?+?Redis?程序的練習(xí),準(zhǔn)備一個(gè)Python文件,名字為?app.py?提供一個(gè)web服務(wù),可以訪問地址,返回一個(gè)Hello?Container?World!并且記錄訪問的次數(shù),下面來看看有趣的練習(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論