您的位置:首页 > 运维架构 > Docker

docker三剑客之docker-compose(记官方案例)

2018-12-30 21:26 1741 查看

简介

Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高。

Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。 

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。

其它大部分指令都跟 docker run 中的类似。

实验环境:已安装docker的主机
本文使用的是Centos7.4
docker版本:Docker version 18.09.0, build 4d60db4
ip地址:192.168.70.128

步骤一:设置
定义应用程序依赖项

1.为项目创建一个目录

[root@localhost composetest]# pwd
/opt/composetest

2.创建一个app.py的python脚本

[root@localhost composetest]# vim 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)

3.另创建一个requirements.txt文件

vim requirements.txt
flask
redis

++++++++++++不才,没有研究python,所以暂时不能为各位解释这个python脚本,日后学习中定回头重新完善++++++++++

步骤二:创建一个Dockerfile

生成Docker镜像的Dockerfile,该镜像包含Python应用程序所需的所有依赖项,包括Python本身。

[root@localhost composetest]# vim dockerfile     #内容如下
FROM python:3.4-alpine     #指定镜像为python:3.4-alpine
ADD . /code                          #添加当前目录到镜像下的/code,不存在会自动创建
WORKDIR /code                 #指定工作目录为/code
RUN pip install -r requirements.txt    #python下载命令,安装的服务为我们上文定义的 requirements.txt 文件内容
CMD ["python", "app.py"]    #定义容器启动时的命令

步骤三:编写docker-compose文件

[root@localhost composetest]# vim docker-compose.yml

version: '3'                   #版本为3
services:                      #定
b68
义服务
web:                            #服务名为web
build: .                      #dockerfile文件路径为当前目录
ports:                        #暴露端口
- "5000:5000"        #本地主机5000端口映射给容器使用
volumes:                 #挂载
- .:/code                  #定义挂载目录为当前目录给容器/code使用
redis:                         #服务名为redis
image: "redis:alpine"    #使用镜像为redis:alpine

步骤四:构建编写的应用

[root@localhost composetest]# docker-compose up     #执行构建命令


步骤五、网页访问

出现的效果图如上所示,当你刷新页面的时候次数会变化

而你的操作终端也会有信息提示

步骤六:修改py文件,改变网页信息

因为我们挂载了本地目录给容器进行使用,所以可以通过更改本地文件的方式更新容器内的信息。

1、另起终端,xhell复制回话,修改app.py文件

2、刷新网页界面
5ac [/code]

3、查看终端界面提示


+++好吧,first少个r,不要太在意。。

小结:本文主要根据官方的给的小范例初步理解docker-compose文件的编写,了解其作用。
执行docker-compose up的时候可以加-d参数,这样就不需要另起终端,而且强制的ctrl+c会终止容器运行,有些时候这是我们不希望看到的。

加了-d参数效果如下
有人要问了,我想看到容器反馈给我的信息怎么办,这个需要用到docker logs命令了

这样我们就能看到容器给我们反馈的信息了
好了,本文主要介绍这么多,下次博客会为大家提供更多的docker-compose的使用,共同学习,努力向前!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息