網(wǎng)站首頁 編程語言 正文
兩個容器,一個flask-demo,一個是redis-server
在一個自定義網(wǎng)絡(luò)bridge,相互ping,不需要知道ip,只用名字就能ping通
1.程序準(zhǔn)備
準(zhǔn)備一個Python文件,名字為 app.py 內(nèi)容如下:
提供一個web服務(wù),可以訪問地址,返回一個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)備一個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)備一個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)建一個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)建一個叫 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é)
如果把上面的步驟合并到一起,成為一個部署腳本:
# 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
原文鏈接:https://blog.csdn.net/weixin_48447848/article/details/122612582
相關(guān)推薦
- 2022-05-12 前端在線預(yù)覽 tiff 格式的圖片
- 2022-04-05 expected a string (for built-in components) or a c
- 2022-06-12 一文教會你在sqlserver中創(chuàng)建表_MsSql
- 2022-09-20 Python?pip超詳細(xì)教程之pip的安裝與使用_python
- 2023-03-18 詳解Flutter中key的正確使用方式_Android
- 2022-05-03 C++中引用的相關(guān)知識點(diǎn)小結(jié)_C 語言
- 2022-09-06 C#任務(wù)并行Parellel.For和Parallel.ForEach_C#教程
- 2023-10-15 達(dá)夢錯誤碼信息-PRO*C 錯誤碼匯編
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支