Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >快速搭建编排上线项目实例

快速搭建编排上线项目实例

作者头像
PayneWu
发布于 2020-12-18 02:35:09
发布于 2020-12-18 02:35:09
34600
代码可运行
举报
文章被收录于专栏:积跬Coder积跬Coder
运行总次数:0
代码可运行

Flask + Redis + Docker-compose 快速搭建与上线简易版网络服务

案例来自于官方文档,后由自我优化编写,更轻量、便捷、快速此项目

请确保docker,docker-compose 能正常运行

实例

构建与运行

  • 编写项目
    • 环境准备
    • 编写业务代码
    • 运行测试
  • 书写Dockerfile
  • 书写docker-compose.yml
  • 运行
    • 创建服务
    • docker-compose build of dockerfile
    • 创建网络
    • 执行docker-compose
    • 项目启动

编写业务代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 新建一个项目目录
mkdir -p composetest
vim app.py
# 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.\n'.format(count)
# Esc :wq
# 书写requirements.txt
flask
redis
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# other app.pyimport timeimport redisfrom 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.\n'.format(count)if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

书写Dockerfile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim Dockerfile
# Dockerfile
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
# Esc :wq
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# other Dockerfile
FROM python:3.7-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
# Esc :wq

编写docker-compose.yaml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim docker-compose.yaml# docker-compose.yamlversion: "3.8"services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
 # Esc :wq
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# other docker-compose.yaml
version: "3.8"
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
  redis:
    image: "redis:alpine"

docker-compose up

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose up

实例优化

业务代码

在后面增加了main函数,这样可以使得我们更便捷与轻量的运行任务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# other 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.\n'.format(count)
if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

requirements 上同

Dockerfile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FROM python:3.7-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

docker-compose.yaml

挂载

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: "3.8"
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
  redis:
    image: "redis:alpine"
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 积跬Coder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker-Compose初体验
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Wu_Candy
2022/07/04
2560
Docker-Compose初体验
Docker Compose 实战 — 搭建 Python Flask应用
官方参考地址:https://docs.docker.com/compose/gettingstarted/
李昂君
2021/12/24
2K0
Docker Compose 实战 — 搭建 Python Flask应用
【Docker 系列】docker 学习九,Compose 内容编排官网初步体验
我们前面的文章学习了 docker ,为什么还要 Compose 呢?Compose到底是个啥玩意?
阿兵云原生
2023/02/16
4150
Docker(四):Docker 三剑客之 Docker Compose
前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。服务编排有很多种技术方案,今天给大家介绍 Docker 官方产品 Docker Compose 。 Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web
纯洁的微笑
2018/04/18
1.3K0
Docker(四):Docker 三剑客之 Docker Compose
容器组织服务docker-compose
在使用容器的时候,我们总是要运行很多的容器,才能组成一个服务,例如当写一个python程序的时候,使用了redis,那么就要运行两个容器,两个容器的之间的数据交互使用link进行连接,而在一台主机上,每次新建一个环境,都要进行docker run然后一大堆参数,对于记忆来说,是一种挑战。
SRE运维实践
2019/07/08
9920
【愚公系列】2022年01月 Docker容器 Compose多容器启动
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 Compose 使用的三个步骤:
愚公搬代码
2022/12/01
1.2K0
【愚公系列】2022年01月 Docker容器 Compose多容器启动
小白学Docker之Compose
承接上篇文章:小白学Docker之基础篇,自学网站来源于https://docs.docker.com/get-started 系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm 概念 Compose是一个编排和运行多容器Docker应用的工具,主要是通过一个YAML文件进行服务配置。 使用Compose主要有三步: 在每个应用环境中配置一个Dockerfile,定义单个应用的镜像 使用docker-compose.yml来组装各个应用 运行docke
糊糊糊糊糊了
2018/05/09
1K0
小白学Docker之Compose
Docker使用手册-基础篇
类似于github和国内的gitee一样的远程仓库,只不过docker hub是公共的镜像仓库,用户可以上传和下载公开的镜像使用。
不知名小白
2024/12/11
2620
Docker火遍全球!dockerfile构建你必须得会
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。如下所示是一个示例Dockerfile文件内容:
Wu_Candy
2022/07/04
2350
Docker火遍全球!dockerfile构建你必须得会
Docker 入门到实战教程(十三)Docker Compose
这里构建一个运行在Docker Compose上的简单Python Web应用程序。该应用程序使用Flask框架,并在Redis中维护一个计数器。尽管该示例使用Python,但即使您不熟悉此处演示的概念,也应可以理解。
小东啊
2020/07/23
2.7K0
Docker 入门到实战教程(十三)Docker Compose
Docker快速部署项目,极速搭建分布式
Docker Swarm是Docker自带的一个集群管理模块。他能够实现Docker集群的创建和管理。
PayneWu
2020/12/18
3.1K0
Docker快速部署项目,极速搭建分布式
云原生时代必须具备的核心技能之Docker高级篇(DockerCompose-容器编排)
  Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
用户4919348
2022/01/06
3290
云原生时代必须具备的核心技能之Docker高级篇(DockerCompose-容器编排)
docker_进阶
overlay:集群中不同主机上的docker是不能ping的,此模式使用虚拟ip,完成此功能
Dean0731
2020/09/14
5490
docker和docker compose安装使用、入门进阶案例
现在可谓是容器化的时代,云原生的袭来,导致go的崛起,作为一名java开发,现在慌得一批。作为知识储备,小编也是一直学关于docker的东西,还有一些持续继承jenkins。 提到docker,大家都知道,以前需要在linux中安装的,现在只需要pull下来镜像,然后运行就可以直接使用了!非常的干净又卫生,但是想想我们一个web应用,是需要mysql、redis、mq等很多个应用组成的,我们使用了docker,就需要一个个的运行,很是麻烦,而且还需要给他们建立一个网桥,因为容器之间是相互隔离的!
掉发的小王
2022/07/11
1.4K0
docker和docker compose安装使用、入门进阶案例
Docker Curriculum
Learn to build and deploy your distributed applications easily to the cloud with Docker.
Cellinlab
2023/05/17
2000
Docker Curriculum
【Docker】项目实战,部署自己的APP
有关 Dockerfile 的相关知识,我在后面的文章会进行讲解,今天主要是实际操作
机器视觉CV
2020/08/13
1.1K0
使用docker-compose部署flask应用
以前部署应用,需要各种环境配置,各种shell操作才能搭建一套可用的服务。现在有了Docker之后,部署方式变了更加容易,不容易出现配置错误,环境不一致问题。解决了在本地环境可以运行,迁移到线上出现各种问题,这些问题大多出现在线上和本地环境有差异,配置容易出现错误等情况。那么docker-compose 和 docker 之间存在着什么联系呢?
子润先生
2021/06/18
2.1K0
docker-compose示例
首先,创建一个名为 app 的文件夹,并在其中创建一个名为 app.py 的文件,其中包含以下 Flask 应用程序代码:
玖叁叁
2023/04/26
4840
Docker-Compose环境搭建和部署SpringBoot项目
3.进入cd util-linux-2.33目录,输入./configure --without-ncurses命令进行check
用户2032165
2019/04/21
3.8K0
Docker Compose 官方阅读笔记
确保你已经安装了docker engine和docker compose。不需要安装python或redis,因为两者都是由docker镜像提供的。
java干货
2021/02/19
8280
Docker Compose 官方阅读笔记
相关推荐
Docker-Compose初体验
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验