前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker-Compose实战<上篇>

Docker-Compose实战<上篇>

作者头像
Wu_Candy
发布2022-07-04 16:47:39
9520
发布2022-07-04 16:47:39
举报
文章被收录于专栏:无量测试之道

1

什么是 docker-compose?


Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

2

Compose 使用的三个步骤


1.使用 dockerfile 定义应用程序的环境。 2.使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。 3.执行 docker-compose build/up 命令来启动并运行整个应用程序。

3

目录组织结构


这个非常重要,因为它是有规范的,如下截图所示:

4

dockerfile 及yml 文件详细内容展示


实战项目示例

docker-compose.yml文件具体内容如下:

代码语言:javascript
复制
#docker-compose的版本
version: '2'
#定义服务
services:
  #服务名称,可随意定义
httprunner:
    build:
      #dockerfile的路径
      context: httprunner
      #dockerfile的名称
      dockerfile: Dockerfile
    #相当于docker run -v的作用
    volumes:
      - "./httprunner:/httprunner"
    #httprunner容器名称
    container_name: HttpRunner-django-backend-compose
    #该服务依赖的其他服务,该配置选项可修改启动顺序
    depends_on:
      - mysql
      - rabbitmq
    ports:
      - "8000:8000"
  #服务名称,可随意定义
mysql:
    build:
      #dockerfile的路径
      context: mysql
      #dockerfile的名称
      dockerfile: Dockerfile
    ports:
      - "3306:3306"
    #相当于docker run命令中的-e
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      #初始化的数据库名称
      MYSQL_DATABASE: HttpRunner
      #mysql容器名称
    container_name: HttpRunner-mysql-compose
    restart: always
    #数据卷映射关系,把本机的./mysql/db目录映射到容器中的/var/lib/mysql
    volumes:
      - "./mysql/data/:/var/lib/mysql"
    #该选项中的命令会覆盖Dockfile中的CMD中的命令.lower_case_table_names参数是为了表名不区分大小写,default-authentication-plugin是8.0中密码加密策略不同带来的链接问题,如果不用8.0可不加此选项
    command: mysqld --lower_case_table_names=1 --default-authentication-plugin=mysql_native_password
  #服务名称,可随意定义
rabbitmq:
    image: rabbitmq:management
    ports:
      - "5672:5672"
      - "15672:15672"
    container_name: HttpRunner-rabbitmq-compose
    environment:
      #rabbitmq的初始用户名
      RABBITMQ_DEFAULT_USER: admin
      #rabbitmq的初始密码
      RABBITMQ_DEFAULT_PASS: 123456

#指定使用的网络,此处是使用已经提前创建好的自定义网络
#网络创建命令:docker network create -d bridge --subnet 172.50.0.0/16 cooperationassociation --subnet指定网段 -d指定连接方式,最后的cooperationassociation为网络名称
#使用新的指定网络是为了防止网段占用完,这样会导致启动容器时XShell会自动退出,且本地用不了访问不了服务(服务器已有大量连接时可能会出现),查看网段占用情况的命令:route -n
networks:
  default:
    external:
      name: cooperationassociation

httprunner 目录下的dockerfile :
FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN mkdir /httprunner
WORKDIR /httprunner
ADD requirements.txt /httprunner/
RUN pip install -r requirements.txt
ADD run.sh /httprunner/
CMD sh run.sh

mysql 目录下的dockerfile:
FROM mysql:5.7
ADD createdb.sql /docker-entrypoint-initdb.d

rabbitmq 目录下的dockerfile是空的,因为它的镜像直接在docker-compose.yml里面定义了,如下所示:
#服务名称,可随意定义
  rabbitmq:
    image: rabbitmq:management
    ports:
      - "5672:5672"
      - "15672:15672"
    container_name: HttpRunner-rabbitmq-compose
    environment:
      #rabbitmq的初始用户名
      RABBITMQ_DEFAULT_USER: admin
      #rabbitmq的初始密码
      RABBITMQ_DEFAULT_PASS: 123456

5

构建操作


在docker-compose.yml 同目录下执行命令docker-compose build 即可

构建的结果:

备注说明:rabbitmq 这个镜像之前docker pull 过,本次又没有变化,所以没有做更新。

友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档