docker compose发布flask应用
一、Compose 简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。compose对于单机或者少量机器的docker管理比较友好,批量node节点的管理还是通过k8s管理比较好。Compose配置应用的步骤一般如下:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
二、Compose安装
最简单的安装方法是配置epel源后,通过yum命令进行安装。这样也可以避免一堆环境依赖,当然除此之外,也可以从github上下载二进制包进行使用。其地址为:
这里以1.27.3版本为例,安装操作命令如下:
1# curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2# chmod +x /usr/local/bin/docker-compose
3# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
三、项目测试
这里以一个最简单的 flask 应用为例,测试项目的目录结构如下:
1[root@localhost ~]# tree /composetest/
2/composetest/
3├── app.py
4├── docker-compose.yml
5├── Dockerfile
6└── requirements.txt
app.py文件的内容如下:
1import time
2import redis
3from flask import Flask
4app = Flask(__name__)
5cache = redis.Redis(host='redis', port=6379)
6def get_hit_count():
7 retries = 5
8 while True:
9 try:
10 return cache.incr('hits')
11 except redis.exceptions.ConnectionError as exc:
12 if retries == 0:
13 raise exc
14 retries -= 1
15 time.sleep(0.5)
16@app.route('/')
17def hello():
18 count = get_hit_count()
19 return 'Hello World! I have been seen {} times.\n'.format(count)
requirements.txt 文件的内容如下:
1flask
2redis
这里列出的是flask应用依赖的包。
创建的Dockerfile文件内容如下:
1FROM python:3.7-alpine
2WORKDIR /code
3ENV FLASK_APP app.py
4ENV FLASK_RUN_HOST 0.0.0.0
5RUN apk add --no-cache gcc musl-dev linux-headers
6COPY requirements.txt requirements.txt
7RUN pip install -r requirements.txt
8COPY . .
9CMD ["flask", "run"]
创建docker-compose.yml文件内容如下:
1# yaml 配置
2version: '3'
3services:
4 web:
5 build: .
6 ports:
7 - "5000:5000"
8 redis:
9 image: "redis:alpine"
通过docker-compose up -d 启用应用即可。这时打开URL访问http://IP:5000 就可以查示Hello World! I have been seen 1 times 的内容,每刷新一次页面,对应的次数也会相应的更新。
四、compose指令
常见的compose指令可以通过–help查看,具体内容如下:
1docker-compose up -d : 后台运行
2docker-compose stop: 停止正在运行的服务
3docker-compose down: 关闭所有容器并删除,默认保留 数据卷
4docker-compose ps:列出当前运行的服务状态和相关信息
5docker-compose run: 一次性命令
这里特别提示下docker-compose build命令(或docker-compose up -d –build),如果运行的app.py内容有更新,可以在启动时,带上build重新生成新的内容,更改会立即生效。
docker-compose run 指信可以查看服务器的指令,这个需要通过docker run 指令也可以正常通过shell 执行才可以,像上面的alpine这种压缩过后的image不一定有输出,例如要输出环境变量信息,可以使用如下指令:
1$ docker-compose run web env
2PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
3HOSTNAME=e4b6b17f39dc
4TERM=xterm
5LANG=C.UTF-8
6GPG_KEY=97FC712E4C024BBEA48A61ED3A5CA953F73C700D
7PYTHON_VERSION=3.7.4
8PYTHON_PIP_VERSION=9.0.1
9HOME=/root
好,本篇幅就先到这里吧,下一篇再对docker-compose的语法结构做一个总结。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/docker-compose/6559.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.