Docker-compose.yml文件示例

1、mysql主从复制的docker-compose.yml文件

# cat docker-compose.yml

version: '2' # 这个version是指dockerfile解析时用的版本,不是给我们自己定义版本号用的.

services:

m1: # master

build: ./master # ./master文件下需要有Dockerfile文件,并且build属性和image属性不能一起使用

container_name: m1 # 容器名

volumes: # 挂载 下边每行前边的`-`代表这个东西是数组的一个元素.就是说volumes属性的值是一个数组

- /home/ssab/config/mysql-master/:/etc/mysql/:ro # 注意改下映射关系

- /etc/localtime:/etc/localtime:ro

- /home/ssab/config/hosts:/etc/hosts:ro # 注意改下映射关系

networks: # 网络

mysql: # 见跟services平级的networks,在最下边

ipv4_address: 172.18.0.2 # 设置静态ipv4的地址

ulimits: # 操作系统限制

nproc: 65535

hostname: m1 # hostname

mem_limit: 1024m # 最大内存使用不超过1024m,我在本地机器上测试,才只写了1024m,生产上需要根据自己的服务器配置,以及docker容器数进行调优.

restart: always # 容器重启策略

environment: # 设置环境变量

MYSQL_ROOT_PASSWORD: m1test

s1: # slave1

build: ./s1

container_name: s1

volumes:

- /home/ssab/config/mysql-s1/:/etc/mysql/:ro

- /etc/localtime:/etc/localtime:ro

- /home/ssab/config/hosts:/etc/hosts:ro

networks:

mysql:

ipv4_address: 172.18.0.3

links:

- m1

ulimits:

nproc: 65535

hostname: s1

mem_limit: 1024m

restart: always

environment:

MYSQL_ROOT_PASSWORD: s1test

s2:# slave2

build: ./s2

container_name: s2

volumes:

- /home/ssab/config/mysql-s2/:/etc/mysql/:ro

- /etc/localtime:/etc/localtime:ro

- /home/ssab/config/hosts:/etc/hosts:ro

links:

- m1

networks:

mysql:

ipv4_address: 172.18.0.4

ulimits:

nproc: 65535

hostname: s2

mem_limit: 1024m

restart: always

environment:

MYSQL_ROOT_PASSWORD: s2test

networks: # docker网络设置

mysql: # 自定义网络名称

driver: bridge # 桥接

ipam: # 要使用静态ip必须使用ipam插件

driver: default

config:

- subnet: 172.18.0.0/24

gateway: 172.18.0.1

2、mycat+mysql读写分离的docker-compose.yml文件:

# cat dicker-compose.yml

version:'2'
services:
  m1:
    build: ./master
    container_name: m1
    volumes:
      - /home/ssab/config/mysql-master/:/etc/mysql/:ro
      - /etc/localtime:/etc/localtime:ro
      - /home/ssab/config/hosts:/etc/hosts:ro
    ports:
      - "3309:3306"#暴露mysql的端口
    networks:
      mysql:
        ipv4_address:172.18.0.2
    ulimits:
      nproc:65535
    hostname: m1
    mem_limit:1024m
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: m1test
  s1:
      build: ./s1
      container_name: s1
      volumes:
        - /home/ssab/config/mysql-s1/:/etc/mysql/:ro
        - /etc/localtime:/etc/localtime:ro
        - /home/ssab/config/hosts:/etc/hosts:ro
      ports:
        - "3307:3306"
      networks:
        mysql:
          ipv4_address:172.18.0.3
      links:
        - m1
     ulimits:
        nproc:65535
      hostname: s1
      mem_limit:1024m
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: s1test
  s2:
    build: ./s2
    container_name: s2
    volumes:
      - /home/ssab/config/mysql-s2/:/etc/mysql/:ro
      - /etc/localtime:/etc/localtime:ro
      - /home/ssab/config/hosts:/etc/hosts:ro
    ports:
      - "3308:3306"
    links:
      - m1
    networks:
      mysql:
        ipv4_address:172.18.0.4
    ulimits:
      nproc:65535
    hostname: s2
    mem_limit:1024m
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: s2test
  mycat:# 设置mycat
    build: ./mycat
    container_name: mycat
    volumes:
      - /home/ssab/config/mycat/:/mycat/conf/:ro# mycat配置文件
      - /home/ssab/config/mycat-logs/:/mycat/logs/:rw# mycat日志文件
      - /etc/localtime:/etc/localtime:ro
      - /home/ssab/config/hosts:/etc/hosts:ro
    ports:
      - "8066:8066"# 暴露mycat服务端口
      - "9066:9066"# 暴露mycat管理端口
    links:# mycat可以连接m1 s1 s2
      - m1
      - s1
      - s2
    networks:
      mysql:
        ipv4_address:172.18.0.5
    ulimits:
      nproc:65535
    hostname: mycat
    mem_limit:1024m
    restart: always
networks:
  mysql:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet:172.18.0.0/24
        gateway:172.18.0.1

mysql的Dockerfile样例:

FROMmysql:5.7.17
MAINTAINER <ssabwork_wjj@163.com>
EXPOSE 3306
CMD ["mysqld"]

mycat的Dockerfile样例:

FROM java:8-jre
MAINTAINER <ssab work_wjj@163.com>
LABEL Description="使用mycat做mysql数据库的读写分离"
ENV mycat-version Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
USER root
COPY ./Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /
RUN tar -zxf /Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
ENV MYCAT_HOME=/mycat
ENV PATH=$PATH:$MYCAT_HOME/bin
WORKDIR $MYCAT_HOME/bin
RUN chmod u+x ./mycat
EXPOSE 80669066
CMD ["./mycat","console"]

docker-compose.yml样例(mysql主从+mycat读写分离)的更多相关文章

  1. 使用docker 实现MySQL主从同步/读写分离

    1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...

  2. Docker容器启动Mysql,Docker实现Mysql主从,读写分离

    Docker容器启动Mysql,Docker实现Mysql主从,读写分离 一.Docker文件编排 二.配置主从复制 2.1 配置master 2.2 配置slave 三.验证主从复制 3.1 mas ...

  3. 聊聊Mysql主从同步读写分离配置实现

    Hi,各位热爱技术的小伙伴您们好,好久没有写点东西了,今天写点关于mysql主从同步配置的操作日志同大家一起分享.最近自己在全新搭建一个mysql主从同步读写分离数据库简单集群,我讲实际操作步骤整理分 ...

  4. Mysql主从配置+读写分离

    Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...

  5. Mysql主从配置+读写分离(转)

       MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. 注:安装前须查看是否已经安装了 ...

  6. Mysql之Mycat读写分离及分库分表

    ## 什么是mycat ```basic 1.一个彻底开源的,面向企业应用开发的大数据库集群 2.支持事务.ACID.可以替代MySQL的加强版数据库 3.一个可以视为MySQL集群的企业级数据库,用 ...

  7. mysql 主从同步-读写分离

    主从同步与读写分离测试 一.  实验环境(主从同步) Master                   centos 7.3              192.168.138.13 Slave     ...

  8. mysql主从同步--读写分离。

    1.mysql 安装参考 https://www.cnblogs.com/ttzzyy/p/9063737.html 2. 主mysql,从mysql 指定配置文件启动 mysqld --defaul ...

  9. springboot多数据源配合docker部署mysql主从实现读写分离

    本篇主要有两部分: 1.使用docker部署mysql主从 实现主从复制 2.springboot项目多数据源配置,实现读写分离 一.使用docker部署mysql主从 实现主从复制 此次使用的是wi ...

随机推荐

  1. ORACLE 管道技术应用

    但是使用管道函数的时候是可以返回一个package里面定义的type的. create or replace package test_typeis    type test_type_record ...

  2. Type conversions in C++类型转换

    ###Implicit conversions隐式转换* 可以在基本类型之间自由转换:* 可以把任何类型的pointer转换为void pointer:* 可以将子类pointer转换为基类point ...

  3. LeetCode145:Binary Tree Postorder Traversal

    题目: Given a binary tree, return the postorder traversal of its nodes' values. For example: Given bin ...

  4. linux系统编程之管道(一):匿名管道(pipe)

    一,什么是管道 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道: 只能用于父子进程或者兄弟进程之间(具有 ...

  5. 使用hadoop-daemon.sh 启动bootstrapStandby nameNode异常

    使用hadoop-daemon.sh 启动bootstrapStandby nameNode异常 启动bootstrapStandby nameNode时,直接通过ssh 过去执行该命令,一直无法成功 ...

  6. 程序猿CET4和CET6考试攻略

    写在前面: 学习一种语言是一个长期的过程,而且需要合适的语言环境,不是一朝一夕可以熟练掌握的,但是如果单纯地只是为了通过考试的话,就另当别论了 声明:本篇攻略纯属经验之谈,绝非任何性质的广告,仅供参考 ...

  7. C#基础复习(2) 之 装箱拆箱

    参考资料 [1] @只增笑耳Jason的回答 https://www.zhihu.com/question/57208269 [2] <C# 捷径教程> 疑难解答 装箱和拆箱是什么? 何时 ...

  8. Win(Phone)10开发第(2)弹,导出APPX包并签名部署

    当我们新建一个win10 uap项目,如果想导出测试包,需要点击项目名称,选择商店-导出应用包,这个时候会生成一个文件夹,包含appx和ps1等文件. powershell运行Add-AppDevPa ...

  9. Day 61 Django第二天 (orm数据库操作)

    一.get请求和post请求 GET请求: 1. 浏览器请求一个页面 2. 搜索引擎检索关键字的时候 POST请求: 1. 浏览器向服务端提交数据,比如登录/注册等 二 . Django中的APP: ...

  10. Day14 作业

    1,整理今天的博客,写课上代码,整理流程图. 2,用列表推导式做下列小题 (1)   过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 (2)   求(x,y)其中x是0-5之间的偶数,y是0- ...