博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建Docker Compose服务堆栈
阅读量:5817 次
发布时间:2019-06-18

本文共 2520 字,大约阅读时间需要 8 分钟。

1.安装了docker-compose,现在我们要使用docker-compose来运行容器栈。这个地方会有两个容器,一个容器中使用Flask搭建的简单应用,另一个容器是Redis,Flash会向redis写入数据。因此设计到容器之间的通信。之前我们讲到了,容器之间通信可以使用--link,也可以使用docker networking的方式,那这节课,我们讲解使用docker-compose来更加方便的管理多容器栈。

2.创建composeapp目录

$ cd /home/xm6f/dev/$ mkdir composeapp$ cd composeapp$ touch Dockerfile

Dockerfile中保存用于构建Docker镜像的指令;还要创建app.py文件,这个文件中编写Flask代码。

app.py文件内容:

#!/usr/bin/env python2# -*- coding: utf-8 -*-# 导入 Flask 和 Redis 模块from flask import Flaskfrom redis import Redisimport os# 创建 Flask appapp = Flask(__name__)# 通过 host 连接到 Redisredis = Redis(host="redis",port=6379)# 指定访问路径@app.route('/')def hi():  redis.incr("ping")  return 'hi , you have ping {0} times'.format(redis.get('ping'))if __name__ == '__main__':  app.run(host="0.0.0.0",debug=True)

 

创建requirements.txt文件,里面放置程序依赖名称:

flaskredis

 

创建Dockerfile文件,用于构建镜像:

# 指定基镜像为 python2.7FROM pythonMAINTAINER ruthless 416501600@qq.comADD . /composeappWORKDIR /composeappRUN pip install -r requirements.txt

 

$ lsapp.py Dockerfile requirements.txt

 

使用docker build -t composeapp . 指令创建composeapp镜像。

$ docker build -t composeapp .$ docker images

 

redis镜像我们就不自己制作了,直接使用Docker Hub上面默认的redis即可,获取redis镜像如下:

$ docker search redis$ docker pull redis

 

3.编写docker-compose.yml文件

应用镜像都构建好了之后,就可以配置compose来创建服务了,compose通过一个约定格式的配置文件配置要启动的服务,每个服务可以选择配置适当的属性,这些属性和docker run命令需要的参数类似。所有的服务和属性都定义在YAML(一种标记语言)文件中,定义好了之后执行docker-compose up命令,compose服务将会根据docker-compose.yml文件启动服务。

创建docker-compose.yml文件

$ touch docker-compose.yml

docker-compose.yml文件中包括一个或者多个要运行的docker容器指令。

web: ##启动容器的名字    image: composeapp ##从哪个镜像启动    command: python app.py ##启动运行之后,执行哪些命令    ports:        - "5000:5000"    volumes:        - .:/composeapp ##当前目录挂载到composeapp目录    links:        - redis        redis:    image: redis

在docker-compose.yml文件中,

image其实也可以指定为Dockerfile文件的路径,
通过command指定服务启动时要执行的命令,类似于Dockerfile中的CMD指令,
使用ports指定端口映射,
使用volumes指定卷,
使用links指定要连接到哪些服务。
这个地方是将redis和web服务进行性连接,类似于docker run命令里面的--link选项。

编辑好docker-compose.yml文件之后,使用docker-compose up命令在docker-compose.yml所在目录执行。compose即上传并开始解析定义在docker-compose.yml文件中的指令。

从运行打印的日志可以看到,compose创建了composeapp_redis_1、composeapp_web_1两个服务,这两个服务的名字是docker-compose.yml所在目录的名字加上docker-compose.yml文件中指定的名字再加上一个数字组成,其目的是保证服务的唯一性。

4.可以使用-d选项,以守护方式运行compose

$ docker-compose up -d

5.查看日志信息

$ docker-compose ps
$ docker-compose logs web
$ docker-compose logs redis

6.使用docker-compose port web 5000 查看web服务5000端口映射情况

$ docker-compose port web 5000
0.0.0.0:5000

注意:操作docker-compose命令要跟docker-compose.yml在同一目录,否则无法操作。

7.网页访问web计数器

刷新浏览器,times会依次递增

 

转载地址:http://jswdx.baihongyu.com/

你可能感兴趣的文章
Nginx+PHP7 安装及配置
查看>>
KeyPass密码管理软件使用说明
查看>>
shell如何快速锁定所有账号
查看>>
听比喻,懂原理(1)超五类双绞线和六类双绞线的区别
查看>>
HTML 5实现的手机摇一摇
查看>>
Linux 文件IO理解
查看>>
Ninject 2.x细说---2.绑定和作用域
查看>>
30个非常时尚的网页联系表单设计优秀示例
查看>>
使用membership(System.Web.Security)来进行角色与权限管理
查看>>
C# 委托、事件 学习
查看>>
opticom 语音质量验证白皮书
查看>>
3D实时渲染中的BSP树和多边形剔除
查看>>
Frank Klemm's Dither and Noise Shaping Page: Dither and Noise Shaping In MPC/MP+
查看>>
Rational Rose 2003 下载、破解及安装方法(图文)
查看>>
网络抓包的部署和工具Wireshark【图书节选】
查看>>
Redis在Windows+linux平台下的安装配置
查看>>
Maven入门实战笔记-11节[6]
查看>>
几篇JavaEye的博客
查看>>
Local declaration of 'content' hides instance variable
查看>>
Android学习之路十四:TabHost
查看>>