想使用mycat实现mysql分库分表功能,但是docker镜像里,几乎没有mycat,所以我们本地打包构建一个docker镜像,步骤如下:
mkdir /usr/local/mycat/conf -p
mkdir /usr/local/docker/mycat/ -p
然后cd到/usr/local/docker/mycat 目录下:
cd /usr/local/docker/mycat
在这个目录下(/usr/local/docker/mycat)下载 Mycat
wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
将Mycat-server-1.6.7.1-release-20190627191042-linux重命名为mycat
mv Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz mycat.tar.gz
将mycat.tar.gz进行解压
tar -zxvf mycat.tar.gz
为了不破坏原来的文件,我们将mycat的配置文件复制到/usr/local/mycat下
cp -r mycat/conf/ /usr/local/mycat # 当前文件夹下mycat/conf/ 复制到 /usr/local/mycat 目录下
在/usr/local/docker/mycat目录下进行操作:
vim dockerfile
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","&"]
docker build -t mycat:1.6 . #注意最后的小数点 . 点代表dockerfile文件在执行打包命令的目录下
打包成功:
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
关于mycat账号和密码:
在server.xml配置文件中:
mysql -uroot -p123456 -h IP地址 -P 8066
或者用navicat工具连接。