docker docker-compose.yml 部署canal和部署 mysql 8.0.30 将mysql同步rabbitmq 并且配置canal 的example和创建rabbitmq队列
时间: 2024-03-26 20:35:10 浏览: 26
好的,针对你的问题,我将分步骤地为你解答。
首先,我们需要编写 `docker-compose.yml` 文件来部署 canal 和 mysql 8.0.30,并且将 mysql 同步到 rabbitmq。以下是一个示例 `docker-compose.yml` 文件:
```yaml
version: '3'
services:
canal:
image: canal/canal-server:v1.1.4
ports:
- "11111:11111"
environment:
- canal.auto.scan=true
- canal.destinations=test
- canal.instance.master.address=mysql:3306
- canal.instance.dbUsername=canal
- canal.instance.dbPassword=canal
- canal.mq.topic=example
- canal.mq.servers=rabbitmq:5672
depends_on:
- mysql
- rabbitmq
mysql:
image: mysql:8.0.30
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test
MYSQL_USER: canal
MYSQL_PASSWORD: canal
ports:
- "3306:3306"
volumes:
- ./data/mysql:/var/lib/mysql
rabbitmq:
image: rabbitmq:3.8.9-management
container_name: rabbitmq
restart: always
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: rabbitmq
RABBITMQ_DEFAULT_PASS: rabbitmq
```
在该文件中,我们定义了三个服务:canal、mysql 和 rabbitmq。canal 服务使用 `canal/canal-server:v1.1.4` 镜像,并暴露端口 `11111`。我们还定义了一些环境变量,包括 `canal.auto.scan`、`canal.destinations`、`canal.instance.master.address`、`canal.instance.dbUsername`、`canal.instance.dbPassword`、`canal.mq.topic` 和 `canal.mq.servers`。这些环境变量将用于配置 canal 服务。canal 服务依赖于 mysql 和 rabbitmq 服务,因此我们使用 `depends_on` 定义了这些依赖关系。
mysql 服务使用 `mysql:8.0.30` 镜像,并暴露端口 `3306`。我们还定义了一些环境变量,包括 `MYSQL_ROOT_PASSWORD`、`MYSQL_DATABASE`、`MYSQL_USER` 和 `MYSQL_PASSWORD`。这些环境变量将用于配置 mysql 服务。我们还将 mysql 数据库的数据卷挂载到本地目录 `./data/mysql`。
rabbitmq 服务使用 `rabbitmq:3.8.9-management` 镜像,并暴露端口 `5672` 和 `15672`。我们还定义了一些环境变量,包括 `RABBITMQ_DEFAULT_USER` 和 `RABBITMQ_DEFAULT_PASS`。这些环境变量将用于配置 rabbitmq 服务。
接下来,我们需要配置 canal 的 `example`,并创建 rabbitmq 队列。可以按照以下步骤进行操作:
1. 进入 canal 容器:`docker exec -it <container_id> /bin/bash`。
2. 切换到 `canal` 用户:`su canal`。
3. 进入 `canal/conf/example` 目录:`cd conf/example`。
4. 编辑 `canal.properties` 文件,将以下行的值更改为你的 mysql 信息:
```
canal.instance.master.address=mysql:3306
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
```
5. 保存并关闭文件。
6. 进入 `canal` 目录:`cd ../..`。
7. 启动 canal:`bin/startup.sh`。
8. 进入 rabbitmq 容器:`docker exec -it <container_id> /bin/bash`。
9. 切换到 `rabbitmq` 用户:`su rabbitmq`。
10. 创建一个名为 `example` 的 exchange:`rabbitmqadmin declare exchange name=example type=direct`。
11. 创建一个名为 `canal` 的 queue:`rabbitmqadmin declare queue name=canal`。
12. 将 `canal` 队列绑定到 `example` exchange 上:`rabbitmqadmin declare binding source=example destination=canal routing_key=canal`。
这样就完成了 canal 和 mysql 的部署,以及 mysql 同步到 rabbitmq 的配置,同时也创建了一个名为 `canal` 的 rabbitmq 队列。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)