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 存放配置文件

docker-build插件安装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>