Docker Compose 实战 — 搭建 Python Flask应用
2023-04-18 16:22:43 时间
阅读量: 45
Docker Compose 安装
创建 docker-compose.yml 配置文件像这样的
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
体验
官方参考地址:https://docs.docker.com/compose/gettingstarted/
一、创建目录
$ mkdir /home/composetest && cd /home/composetest
二、编写体验应用服务
在您的项目目录中创建一个名为 app.py 的文件,并将下面内容粘贴到文件中:
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.
'.format(count)
三、编写导入依赖包
在您的项目目录中创建另一个名为 requirements.txt 的文件,并将其粘贴到:
flask
redis
四、编写DockerFile文件
在此步骤中,您将编写一个构建Docker映像的Dockerfile。该图像包含Python应用程序所需的所有依赖关系,包括Python本身。
在您的项目目录中,创建一个名为Dockerfile的文件并粘贴以下内容:
FROM python:3.7-alpine
ADD . /code
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
五、定义Service到Compose File文件里
在项目目录中创建一个名为 docker-compose.yml 的文件,然后粘贴以下内容:
version: "3.8"
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
# 先启动redis 在启动 web
depends_on:
- redis
redis:
image: "redis:alpine"
该Compose文件定义了两个服务:Web和Redis,实现完整的上线!
六、使用Compose构建和运行您的应用
$ docker-compose up
$ docker-compose up -d 后端启动
1. 运行效果
2. 查看启动的容器信息
3. CURL访问
相关文章
- 一个Java程序员对2011年的回顾
- 大数据发展历程
- Android高级进阶之路【一】Android中View绘制流程浅析
- 可信服务管理(Trusted Service Manager)介绍
- GIS应用|快速开发REST空间分析服务
- 未来十年微软长盛不衰的两项战略
- 领域驱动设计模式的收益与挑战
- cocos 3.0 一键打包android平台应该注意的细节
- 数智化时代,驱动企业转型升级的“三驾马车”是什么?
- 基于MINA构建高性能的NIO应用
- 使用Rainbond实现离线环境软件交付
- 工作流引擎 jBPM 5.2 发布
- 微信小程序Minium自动化测试(三)
- 桌面应用抢先体验,这次有点料!
- 甲骨文Java专利遭拒 起诉Android侵权受挫
- 云计算的应用领域及发展前景
- Java效率真的很低吗?Android为何要采用?
- Android高级进阶之路【二】十分钟彻底弄明白 View 事件分发机制
- 庖丁解牛之-Android平台RTSP|RTMP播放器设计
- 手机直付,超级方便