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.为项目创建一个目录
[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的使用,共同学习,努力向前!
- 官方文档,才是正途-docker-compose
- Docker 三剑客之Docker Compose详解
- docker三剑客之docker compose
- Docker 三剑客之 Docker Compose
- CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose
- docker compose 应用案例 web负载均衡
- docker三剑客之应用machine,compose,swarm
- Docker(四):Docker 三剑客之 Docker Compose
- Docker(四):Docker 三剑客之 Docker Compose
- Docker三剑客:Compose、Machine和Swarm
- Docker三剑客之Compose-一
- Docker三剑客之Compose-三
- centos7 Docker 三剑客之compose安装
- 容器技术|Docker三剑客之docker-compose
- Docker Compose入门示例
- 基于docker-compose的多应用部署
- Unity3D官方案例--SurvivalShooter游戏总结
- 关于官方的fabric-sample项目启动案例简单分析
- docker swarm 搭建及跨主机网络互连案例分析
- 2. docker-compose