docker-build插件安装mycat服务
下载mycat安装包
下载地址:https://github.com/MyCATApache/Mycat-download
本文下载的是1.6版本(Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz)
建立maven docker工程
项目结构
->src/main/docker 存放docker文件
->src/main/docker/mycat 存放配置文件
pom.xml添加docker插件
<build>
<plugins>
<!-- Compile Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!-- Test Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!-- docker插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.maven.plugin.version}</version>
<configuration>
<imageName>
${harbor.url}/parking/${project.groupId}/${project.artifactId}/${profiles.active}:${project.version}
</imageName>
<dockerDirectory>${project.build.outputDirectory}</dockerDirectory>
<!-- harbor的id -->
<serverId>harbor-registry</serverId>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<!--docker配置文件目录-->
<directory>src/main/docker</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
配置dockerfile
#基础镜像(如果已经有自己的mycat镜像可以不需要原始安装包)
FROM ubuntu
MAINTAINER "Mr Zeng"<[email protected]>
##
此处省略安装jdk步骤
....
##
## 复制mycat安装包
COPY ./Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /
##解压mycat安装包
RUN tar -xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /
ENV MYCAT_HOME=/mycat
## 覆盖自定义mycat配置
COPY mycat/ /mycat/conf/
ENV PATH=$PATH:$MYCAT_HOME/bin
## 启动mycat
CMD ["/mycat/bin/mycat","console"]
配置docker-compose.yml
version: "3"
services:
parking-mycat-server:
hostname: test-mycat-server
image: @[email protected]/test-mycat-server:1.0.1
ports:
- "[email protected]:8066" ##暴露连接端口
- "[email protected]:9066" ##暴露管理端口
networks:
- asset-network-01
volumes:
- "/var/log/docker/:/root/logs"
deploy:
placement:
constraints:
- node.labels.deploy == true
resources:
limits:
memory: 2G
networks:
asset-network-01:
external: true
配置-wrapper.conf
# Initial Java Heap Size (in MB) 修改初始化堆
wrapper.java.initmemory=200
# Maximum Java Heap Size (in MB) 最大堆
wrapper.java.maxmemory=1024
# Log Level for console output. (See docs for log levels) 日志级别
wrapper.console.loglevel=DEBUG
# Log file to use for wrapper output logging. 日志存放目录
wrapper.logfile=logs/wrapper.log
# Log Level for log file output. (See docs for log levels) 文件日志级别
wrapper.logfile.loglevel=DEBUG
配置-server.xml
##连接端口,默认为8066
<property name="serverPort">8066</property>
##管理端口,默认为9066
<property name="managerPort">9066</property>
##配置连接用户
<user name="root">
<property name="password">test</property>
##用户所属mycat数据仓库
<property name="schemas">TestDB</property>
</user>
配置schema.xml
<schema name="parkingDB" checkSQLschema="false" sqlMaxLimit="100">
<!-- auto sharding by id (long) 默认分片数量为3-->
<table name="parking_record" dataNode="dn1,dn2,dn3" rule="auto-sharding-long"/>
</schema>
<dataNode name="dn1" dataHost="localhost1" database="parking-dev-db1"/>
<dataNode name="dn2" dataHost="localhost1" database="parking-dev-db2"/>
<dataNode name="dn3" dataHost="localhost1" database="parking-dev-db3"/>
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS1" url="192.168.235.0:33061" user="root" password="vanke-mysql-100" />
</dataHost>
rule.xml说明
##rule.xml配置了一些分配规则,也可以自定义,例如一下两个比较常见的分配规则
<tableRule name="auto-sharding-long">
<rule>
<columns>id</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>
<tableRule name="mod-long">
<rule>
<columns>id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>