使用docker-compose搭建flask和redis环境

简介

docker-compose的出现,解决了批量化docker环境的问题,只需要配置docker-compose.yml文件,就可以搭建自己所需的环境。所以,我就根据docker官网的手册,使用docker-compose来搭建环境,首先搭建的是一个flask网站,使用的是redis。

搭建

Step 1:Setup

1.创建仓库,安装的镜像,服务都在创建的仓库里

$ mkdir composetest
$ cd composetest

2.创建app.py,我们的flask网站内容反映在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)

代码的意思是每次刷新网站,访问次数会在页面显示。官方文档中显示的注意事项,关于get_hit_count的细节,翻译过来是

注意get_hit_count函数的编写方式。如果Redis服务不可用,这个基本的重试循环允许我们多次尝试请求。
当应用程序联机时,这在启动时很有用,但如果在应用程序的生命周期内需要随时重新启动Redis服务,这也会使我们的应用程序更有弹性。
在集群中,这也有助于处理节点之间的瞬时连接丢失。

3.创建requirements.txt文件,里面的内容是

flask
redis

这是flask必要的文件,里面是需求

Step 2:Create a Dockerfile

在你编写的dockerfile里面,包含了python应用程序需要的所有依赖项,包括python本身,在本项目里,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
COPY . .
CMD ["flask", "run"]

功能如下:

从python 3.7映像开始构建映像。              
将工作目录设置为/code。              
设置flask命令使用的环境变量。              
安装gcc,让诸如markupsafe和sqlacalchemy之类的python包可以编译加速。              
复制requirements.txt并安装python依赖项。              
复制当前目录。在项目中到WorkDir。在图像中。              
将容器的默认命令设置为flask run。

更多的使用方法,可以参考官方文档

https://docs.docker.com/engine/reference/builder/

step 3:Create a docker-compose.yml

在这一步中,我们需要做的就是根据自己的需要,来写配置文件

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

可以发现,services里面有两个服务,一个是web,另一个是redis,web服务的作用是在容器里绑定端口5000,redis是从网上pull下来的。
这里是配置文件的参数信息

https://blog.csdn.net/Aria_Miazzy/article/details/89326829

step 4:Build and run

使用命令

docker-compose up

让我们的容器运转起来,在执行过程中可能会出现报错

ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update --fix-missing' returned a non-zero code: 127

这是源的问题,就需要我们换一下源,换源可以参考文章

http://dvsx.cn/2019/07/11/ubuntu-huan-yuan/

问题解决之后,就可与在网站上访问了
在这里插入图片描述
主机访问
虚拟机访问

更新参数

想要更改参数,需要先关闭环境

docker-compose down

我们想要修改的是增加一个环境变量,允许动态的修改代码,而不必重启镜像。flask_env环境变量,指示flask run以开发者模式运行。

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    environment:
      FLASK_ENV: development
  redis:
    image: "redis:alpine"

然后再开启环境就可以了

docker-compose up

总结

在环境的搭建过程中,daockerfile和docker-compose.yml的编写是很重要的步骤,要理解各个参数的意思,才能根据自己的需求搭建出自己想要的环境。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值