注意修改以下的jar与安装包壳压缩包的版本
docker运行的mycat2无法通过工具连接,请把server.json的ip设置为0.0.0.0
创建镜像
在linux中创建文件
Dockerfile
FROM docker.io/adoptopenjdk/openjdk8:latest
ENV AUTO_RUN_DIR ./mycat2
ENV DEPENDENCE_FILE mycat2-1.22-release-jar-with-dependencies-5-12.jar
ENV TEMPLATE_FILE mycat2-install-template-1.21.zip
RUN sed -i "s@http://.*archive.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources.list
RUN sed -i "s@http://.*security.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources.list
RUN buildDeps='procps wget unzip' \
&& apt-get update \
&& apt-get install -y $buildDeps
RUN wget -P $AUTO_RUN_DIR/ http://dl.mycat.org.cn/2.0/1.22-release/$DEPENDENCE_FILE \
&& wget -P $AUTO_RUN_DIR/ http://dl.mycat.org.cn/2.0/install-template/$TEMPLATE_FILE
RUN cd $AUTO_RUN_DIR/ \
&& unzip $TEMPLATE_FILE \
&& ls -al . \
&& mv $DEPENDENCE_FILE mycat/lib/ \
&& chmod +x mycat/bin/* \
&& chmod 755 mycat/lib/* \
&& mv mycat /usr/local
#copy mycat /usr/local/mycat/
VOLUME /usr/local/mycat/conf
VOLUME /usr/local/mycat/logs
EXPOSE 8066 1984
CMD ["/usr/local/mycat/bin/mycat", "console"]
创建images
docker build -t mycat.org.cn/mycat2:20220513 .
创建mysql
如果有现成的mysql,以及mysql用户可以跳过当前步骤;
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
mysql用户创建
登录进去mysql(账号:root,密码:123456),并创建用户以及对应的权限配置,用户名为mycat,密码为123456,赋权限XA_RECOVER_ADMIN对于mysql 8需要,低版本不需要
CREATE USER 'mycat'@'%' IDENTIFIED BY '123456';
--必須要複的權限
GRANT XA_RECOVER_ADMIN ON *.* TO 'root'@'%';
---視情況賦值權限
GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%' ;
flush privileges;
mycat配置文件
创建配置文件conf
cd /data/mycat2
wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
unzip mycat2-install-template-1.21.zip
mv mycat/conf/ ./conf && rm -rf mycat
修改mycat的conf下prototype的配置(文件路径conf/datasources/prototypeDs.datasource.json)
修改其中对应的user(用户),password(密码),url中的ip
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"prototypeDs",
"password":"123456",
"type":"JDBC",
"url":"jdbc:mysql://169.254.212.3:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"mycat",
"weight":0
}
启动镜像
docker run \
--rm \
-it \
-p 8066:8066 \
-p 1984:1984 \
-v /data/mycat2/conf:/usr/local/mycat/conf \
-v /data/mycat2/logs:/usr/local/mycat/logs \
mycat.org.cn/mycat2:20220513
网友touch提供docker例子
# 镜像
# docker build -t mycat2.0:1.20 .
FROM openjdk:18-slim-buster
# 作者
MAINTAINER Touch
RUN sed -i s/deb.debian.org/mirrors.cloud.tencent.com/g /etc/apt/sources.list
RUN apt-get update -y && apt-get install wget -y && apt-get install unzip -y && apt-get install procps -y \
&& cd /usr/local && wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zip \
&& unzip mycat2-install-template-1.20.zip \
&& cd /usr/local/mycat/lib \
&& wget http://dl.mycat.org.cn/2.0/1.20-release/mycat2-1.20-jar-with-dependencies-2021-8-27.jar \
&& cd /usr/local/mycat/bin \
&& chmod +x ./*
ENTRYPOINT ["/usr/local/mycat/bin/mycat", "console"]
EXPOSE 8066 1984 9066 7066