注意修改以下的jar与安装包壳压缩包的版本

docker运行的mycat2无法通过工具连接,请把server.json的ip设置为0.0.0.0

网友张委员提供docker例子

创建镜像

在linux中创建文件
Dockerfile

  1. FROM docker.io/adoptopenjdk/openjdk8:latest
  2. ENV AUTO_RUN_DIR ./mycat2
  3. ENV DEPENDENCE_FILE mycat2-1.22-release-jar-with-dependencies-5-12.jar
  4. ENV TEMPLATE_FILE mycat2-install-template-1.21.zip
  5. RUN sed -i "s@http://.*archive.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources.list
  6. RUN sed -i "s@http://.*security.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources.list
  7. RUN buildDeps='procps wget unzip' \
  8. && apt-get update \
  9. && apt-get install -y $buildDeps
  10. RUN wget -P $AUTO_RUN_DIR/ http://dl.mycat.org.cn/2.0/1.22-release/$DEPENDENCE_FILE \
  11. && wget -P $AUTO_RUN_DIR/ http://dl.mycat.org.cn/2.0/install-template/$TEMPLATE_FILE
  12. RUN cd $AUTO_RUN_DIR/ \
  13. && unzip $TEMPLATE_FILE \
  14. && ls -al . \
  15. && mv $DEPENDENCE_FILE mycat/lib/ \
  16. && chmod +x mycat/bin/* \
  17. && chmod 755 mycat/lib/* \
  18. && mv mycat /usr/local
  19. #copy mycat /usr/local/mycat/
  20. VOLUME /usr/local/mycat/conf
  21. VOLUME /usr/local/mycat/logs
  22. EXPOSE 8066 1984
  23. CMD ["/usr/local/mycat/bin/mycat", "console"]

创建images

  1. docker build -t mycat.org.cn/mycat2:20220513 .

创建mysql

如果有现成的mysql,以及mysql用户可以跳过当前步骤;

  1. docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

创建mysql,默认的密码为123456,账号为root

mysql用户创建

登录进去mysql(账号:root,密码:123456),并创建用户以及对应的权限配置,用户名为mycat,密码为123456,赋权限XA_RECOVER_ADMIN对于mysql 8需要,低版本不需要

  1. CREATE USER 'mycat'@'%' IDENTIFIED BY '123456';
  2. --必須要複的權限
  3. GRANT XA_RECOVER_ADMIN ON *.* TO 'root'@'%';
  4. ---視情況賦值權限
  5. GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%' ;
  6. flush privileges;

mycat配置文件

创建配置文件conf

  1. cd /data/mycat2
  2. wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
  3. unzip mycat2-install-template-1.21.zip
  4. mv mycat/conf/ ./conf && rm -rf mycat

修改mycat的conf下prototype的配置(文件路径conf/datasources/prototypeDs.datasource.json)
修改其中对应的user(用户),password(密码),url中的ip

  1. {
  2. "dbType":"mysql",
  3. "idleTimeout":60000,
  4. "initSqls":[],
  5. "initSqlsGetConnection":true,
  6. "instanceType":"READ_WRITE",
  7. "maxCon":1000,
  8. "maxConnectTimeout":3000,
  9. "maxRetryCount":5,
  10. "minCon":1,
  11. "name":"prototypeDs",
  12. "password":"123456",
  13. "type":"JDBC",
  14. "url":"jdbc:mysql://169.254.212.3:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
  15. "user":"mycat",
  16. "weight":0
  17. }

启动镜像

  1. docker run \
  2. --rm \
  3. -it \
  4. -p 8066:8066 \
  5. -p 1984:1984 \
  6. -v /data/mycat2/conf:/usr/local/mycat/conf \
  7. -v /data/mycat2/logs:/usr/local/mycat/logs \
  8. mycat.org.cn/mycat2:20220513

网友touch提供docker例子

  1. # 镜像
  2. # docker build -t mycat2.0:1.20 .
  3. FROM openjdk:18-slim-buster
  4. # 作者
  5. MAINTAINER Touch
  6. RUN sed -i s/deb.debian.org/mirrors.cloud.tencent.com/g /etc/apt/sources.list
  7. RUN apt-get update -y && apt-get install wget -y && apt-get install unzip -y && apt-get install procps -y \
  8. && cd /usr/local && wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zip \
  9. && unzip mycat2-install-template-1.20.zip \
  10. && cd /usr/local/mycat/lib \
  11. && wget http://dl.mycat.org.cn/2.0/1.20-release/mycat2-1.20-jar-with-dependencies-2021-8-27.jar \
  12. && cd /usr/local/mycat/bin \
  13. && chmod +x ./*
  14. ENTRYPOINT ["/usr/local/mycat/bin/mycat", "console"]
  15. EXPOSE 8066 1984 9066 7066