docker-compose编排clickhouse22、mysql8、redis6。
看过很多的文章,当数据量特别大的时候,比如说千万级,不建议在容器中运行程序,会有性能损耗。
但是随着互联网发展,架构的不断调整,未来的趋势一定是容器化。
本文使用的镜像是:clickhouse/clickhouse-server:22.2.2.1
、mysql:8.0.35
、redis:6.0.8
环境准备
以下的 mydata
目录名称根据规范自行修改,这里只是示范。
1 | # 创建clickhouse挂载目录 |
Clickhouse
1 | # 切换到clickhouse挂载目录,创建好对应的挂载目录结构,以及创建对应的挂载文件(一般是配置文件) |
将如下文件复制到/mydata/docker-compose/clickhouse/config中
docker_related_config.xml
1 | <clickhouse> |
config.xml
1 |
|
users.xml
1 |
|
上面的用户密码为密文,需要通过进入容器执行如下命令获取自定义密码的密文(或者直接设置明文密码)
1 | docker exec -it clickhouse /bin/bash |
MySQL
1 | # 切换到mysql挂载目录,创建好对应的挂载目录结构,以及创建对应的挂载文件(一般是配置文件) |
将如下文件复制到/mydata/docker-compose/mysql/config中
my.cnf
1 | [mysqld] |
Redis
1 | # 切换到Redis挂载目录,创建好对应的挂载目录结构,以及创建对应的挂载文件(一般是配置文件) |
其中配置文件可以从官网获取,根据自身需求修改对应配置,放到/mydata/docker-compose/redis/config下即可,编排的时候指定就行。
编排
编写编排文件:docker-compose.yml
1 | version: '3' |
如果后续有数据迁移操作,直接将 /mydata/docker-compose 打包迁移重新编排运行即可。
有一点就是mysql8重新初始化会检查数据目录是否为空,如果因此报错而无法成功运行的话,先将data目录数据备份到另一个地方(保证data为空),等mysql启动成功,再将其迁回来。