博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker入门(三)使用Docker Compose
阅读量:6218 次
发布时间:2019-06-21

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

Compose介绍

  Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。

为什么使用Compose

  在Docker镜像构成和定制介绍中,我们可以使用Dockerfile文件很方便定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

安装Compose

  Compose的安装十分容易,只需要以下命令即可:

pip install docker-compose

为了检测Compose是否安装成功,可以查看Compose的版本信息,如下:

$ docker-compose -versiondocker-compose version 1.23.2, build 1110ad0

Compose实战

  接下去我们将通过一个具体的项目来展示Compose的使用。项目的结构如下:

项目结构

  对于项目的Python代码,我们不再具体讲述,有兴趣的同学可移步: 。

  首先我们先打包一个poem_search镜像,用于前端运行,然后拉取镜像mongo,最后用Compose将两个镜像打包在一起,共同运行。
  打包poem_search镜像涉及到两个文件:poem_search.build及build_poem_search.sh 。其中Dockerfile文件poem_search.build如下:

FROM centos:7.5.1804# 维护者MAINTAINER jclian91@sina.com# 安装基础环境RUN yum clean all \    && yum makecache \    && yum update -y \    && yum groupinstall -y "Development tools" \    && yum install -y yum-utils \    && yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel \    && yum install -y sqlite-devel readline-devel tk-devel gdbm-devel \    && yum install -y db4-devel libpcap-devel xz-devel \    && yum install -y wget gcc gcc-c++ automake autoconf libtool make \        && yum install -y wget gcc gcc-c++ python-devel mysql-devel bzip2 \    && yum install -y https://centos7.iuscommunity.org/ius-release.rpm \    && yum install -y python36u \    && yum install -y python36u-pip \    && yum install -y python36u-devel \    && yum clean all# 安装Python3.6RUN cd /usr/bin \    && mv python python_old \    && ln -s /usr/bin/python3.6 /usr/bin/python \    && ln -s /usr/bin/pip3.6 /usr/bin/pip \    && pip install --upgrade pip#环境变量硬编码及时区ENV ENVIRONMENT productionRUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime#安装Python的第三方模块RUN pip3 install pandas -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \    && pip3 install pymongo -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \    && pip3 install tornado -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \    && pip3 install urllib3 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \    && pip3 install requests -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \    && pip3 install bs4# 拷贝COPY ./src /root/poem_search/src# 工作目录WORKDIR /root/poem_search/src# 暴露端口EXPOSE 8000# 执行命令CMD ["python","server.py"]

shell脚本build_poem_search.sh的代码如下:

tag=$1# -f 指定文件 , -t 指定生成镜像名称 , 冒号后为版本号,最后的.表示docker_file的上下文环境docker build -f poem_search.build -t hub.docker.com/poem_search:test.${tag} .

打包镜像,并将该镜像推送至自己的docker hub,命令如下:

./build_poem_search.sh 1111

镜像打包完后,将其推送至自己的docker hub,具体的命令可以参考文章: , 如下图:

dockhub镜像

接着,拉取MongoDB镜像:

docker pull mongo

最后,用docker compose将两个镜像组合在一起,其中docker-compose.yml如下:

version: "3.3"# 定义两个服务: poemSearch, mongoservices:  poemSearch:    depends_on:      - mongo    image: jclian91/poem_search:v1.0_2019.02.20.1745    container_name: poemSearch    ports:      - "8000:8000"    restart: always    deploy:      replicas: 1    networks:      - poemSearch  mongo:    image: mongo:latest    container_name: mongo    deploy:      replicas: 1    networks:      - poemSearch    ports:      - "27017:27017"    volumes:      - $PWD/db:/data/db    command: ["mongod"]#Networknetworks:  poemSearch:

关于YAML文件的编写及说明,可以参考网址: 。

  切换至YAML所在文件夹,输入命令:

docker-compose up -d

输出的结果如下:

Creating mongo ... doneCreating poemSearch ... done

这时,在浏览器中输入“:8000/query”即可运行我们的程序,界面如下:

诗歌搜索界面

在其中输入搜索关键词,比如“白云”,则会显示一条随机的结果,如下:

诗歌搜索结果

点击“查询词高亮”,则查询词部分会高亮显示。

体验Compose

  如果需要体验该项目,则需要以下三个工具:

  • git
  • docker
  • docker-compose

用git下载该项目,命令如下:

git initgit clone -b v1.2 https://github.com/percent4/Poem-Search.git

然后切换至docker-compose.yml所在路径,运行命令:

docker-compose up -d

即可运行该项目,然后在浏览器中输入“:8000/query”即可。如需要停止该项目的运行,则运行命令:

docker-compose down

总结

  本项目的github地址为, 分支为v1.2 。

注意:本人现已开通微信公众号: Python爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注哦~~

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

你可能感兴趣的文章
下MFC中对象、句柄、ID之间的区别.
查看>>
Flymeos插桩适配教程
查看>>
还在用PS磨皮去皱?看看如何用神经网络高度还原你的年轻容貌!
查看>>
大端模式与小端模式、网络字节顺序与主机字节顺序
查看>>
微信支付申请90%的商户都卡在这儿了,申请微信支付,商户功能设置详细说明...
查看>>
高仿Instagram 页面效果android特效
查看>>
2016 年总结
查看>>
将String转化成Stream,将Stream转换成String
查看>>
java路径Java开发中获得非Web项目的当前项目路径
查看>>
【工具使用系列】关于 MATLAB 遗传算法与直接搜索工具箱,你需要知道的事
查看>>
Kali-linux Arpspoof工具
查看>>
PDF文档页面如何重新排版?
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
StringBuilder用法小结
查看>>