docker三剑客之docker-compose(记官方案例)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker三剑客之docker-compose(记官方案例)相关的知识,希望对你有一定的参考价值。
简介
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.为项目创建一个目录
[[email protected] composetest]# pwd
/opt/composetest
2.创建一个app.py的python脚本
[[email protected] 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.
‘.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本身。
[[email protected] 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文件
[[email protected] composetest]# vim docker-compose.yml
version: ‘3‘ #版本为3
services: #定义服务
web: #服务名为web
build: . #dockerfile文件路径为当前目录
ports: #暴露端口
- "5000:5000" #本地主机5000端口映射给容器使用
volumes: #挂载
- .:/code #定义挂载目录为当前目录给容器/code使用
redis: #服务名为redis
image: "redis:alpine" #使用镜像为redis:alpine
步骤四:构建编写的应用
[[email protected] composetest]# docker-compose up #执行构建命令
步骤五、网页访问
出现的效果图如上所示,当你刷新页面的时候次数会变化
而你的操作终端也会有信息提示
步骤六:修改py文件,改变网页信息
因为我们挂载了本地目录给容器进行使用,所以可以通过更改本地文件的方式更新容器内的信息。
1、另起终端,xhell复制回话,修改app.py文件
2、刷新网页界面
3、查看终端界面提示
+++好吧,first少个r,不要太在意。。
小结:本文主要根据官方的给的小范例初步理解docker-compose文件的编写,了解其作用。
执行docker-compose up的时候可以加-d参数,这样就不需要另起终端,而且强制的ctrl+c会终止容器运行,有些时候这是我们不希望看到的。
加了-d参数效果如下
有人要问了,我想看到容器反馈给我的信息怎么办,这个需要用到docker logs命令了
这样我们就能看到容器给我们反馈的信息了
好了,本文主要介绍这么多,下次博客会为大家提供更多的docker-compose的使用,共同学习,努力向前!
以上是关于docker三剑客之docker-compose(记官方案例)的主要内容,如果未能解决你的问题,请参考以下文章