Docker构建Mycat(单节点)

Mycat是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。

Mycat支持多种数据库接入,如:MySQL、SQLServer、Oracle、MongoDB 等,推荐使用MySQL 做集群。

1. 创建Mycat配置文件夹

mkdir /usr/local/mycat
mkdir /usr/local/mycat/conf

2. 创建docker文件夹

mkdir /usr/local/docker/mycat/
cd /usr/local/docker/mycat

3. 下载mycat安装包

wget http://dl.mycat.io/1.6.6.1/Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz
mv Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz mycat.tar.gz

4. 解压并复制文件

tar -zxvf mycat.tar.gz
cp -r mycat/conf/ /usr/local/mycat

5. 创建Dockerfile文件

#基于openjdk:8 创建镜像,
#如果是基于centos或其他的,必须保证已安装了JDK,否则就需要在Dockerfile文件中也ADD进来
FROM openjdk:8

#将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
#将mycat解压到/usr/local目录中,得到 /usr/local/mycat
ADD mycat.tar.gz /usr/local

#容器数据卷,用于数据保存和持久化工作
#将mycat的配置文件的地址暴露出映射地址,启动时直接映射宿主机的文件夹
VOLUME /usr/local/mycat
WORKDIR /usr/local/mycat

#用来在构建镜像过程中设置环境变量
ENV MYCAT_HOME=/usr/local/mycat

#暴露出MyCat的所需端口
EXPOSE 8066 9066

#以前台进程的方式启动MyCat服务
CMD ["/usr/local/mycat/bin/mycat", "console","&"]

6. 构建镜像

# 注意最后还有 .
docker build -t mycat-1.6.6.1 .

7. 启动容器

#容器券:-v /usr/local/mycat/conf/:/usr/local/mycat/conf/
#冒号前是本机路径,冒号后是容器内的目录路径
#创建多个容器卷,尤其是配置文件和日志
docker run --name mycat -p 8066:8066 -p 9066:9066 -v /usr/local/mycat/conf/:/usr/local/mycat/conf/ -v /usr/local/mycat/logs/:/usr/local/mycat/logs/ -d mycat-1.6.6.1

注:为了确定容器券设置是否有效,可以在本机的目录下改下配置文件,进入容器内查看文件是否改变,如果一致,则设置成功。

防火墙设置,需要开放mycat的连接端口8066和管理端口9066。

8. 进入容器和退出容器

# 进入容器
docker exec -it 1b652326460e /bin/bash

# 两种退出方式
# 第一种:容器停止退出,在容器终端输入exit
# 第二种:容器不停止退出,在容器终端按Ctrl+P+Q

9. 配置

编辑/usr/local/mycat/conf/目录下的server.xml,schema.xml等配置文件。

schema.xml的配置如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">

                <table name="user" primaryKey="ID" autoIncrement="true" dataNode="dn1" />
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="mydb" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostS1" url="192.168.178.5:12345" user="root"
                                   password="123456" />
        </dataHost>
</mycat:schema>

更多详细的配置请看:

Mycat的server.xml配置

Mycat的schema.xml配置

10. Navicat连接

 

posted @ 2020-02-28 20:43  codedot  阅读(3540)  评论(0编辑  收藏  举报