# Docker部署CP7(Win\&Linux)

安装docker

{% embed url="<https://hub.docker.com/editions/community/docker-ce-desktop-windows>" %}
下载win10版docker安装包地址
{% endembed %}

{% embed url="<https://B.Linux系统安装docker>" %}
Linux系统安装说明
{% endembed %}

### 1.正确安装Docker到系统

确保docker正常启动，确保docker容器类型为linux containers(一般安装完成后默认即)

{% hint style="info" %}
docker在Win或Linux系统成功安装docker后，以下操作在Win和Linux下均可正常使用
{% endhint %}

### 2.下载Coolpy7镜像

打开一个新的cmd命令行模式，执行以下指令

```
//拉取镜像文件到本地
$ docker pull coolpy7/coolpy7_core
```

![docker pull 指令](/files/-LbhYzF7du7A8f_1mIfd)

```
//查看镜像是否拉取完成
$ docker images
```

![docker images 指令确认coolpy7\_core镜像存在](/files/-LbhmK-q7bVkooLz7hPU)

在主系统d盘创建data文件夹为共享硬盘给Coolpy7内核使用，用于Coolpy7内核的持久化MQTT消息，用户Session、订阅主题等。同时可以确保镜像更新后原有的持久化数据不丢失。

```
//创建d盘data文件夹
$ mkdir d:\data
//创建d盘plugin文件夹,如果没有使用coolpy7的插件功能可以忽略此步
$ mkdir d:\plugin
//如果Linux系统请换成Linux路径
```

使用docker run指令启动Coolpy7镜像

```
//p参数指定容器内部1883端口影射到主系统1883端口
//v参数指明挂载容器/data文件夹到主系统的d:/data文件夹
//v参数指明挂载窗口/plugin文件夹到主系统的d:/plugin文件夹
$ docker run -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 18083:18083 -p 5683:5683 -p 7946:7946 -p 7947:7947 --restart=always -d --name cp7 -v d:/data:/data -v d:/plugin:/plugin coolpy7/coolpy7_core
//如果Linux系统请换成Linux路径为v参数对应的路径
```

{% hint style="info" %}
指令执行过程中docker会在右下角出现Share drive提问框，需要点击Share it按扭允许共享d盘data文件夹给docker操作。
{% endhint %}

![docker run 指令启动Coolpy7](/files/-LbhnhqP28oNKCpZEPT5)

![通过ps指令确认Coolpy7镜像已运行](/files/-Lbho8MQaKwuNx8dY3Te)

至此基于Docker的Coolpy7已正常启动，我们可以通过连接到宿主的1883端口进行MQTT客户端连接测试，在本测试环境中docker主系统的内网ip为192.168.31.221

![使用谷歌浏览器MQTTLens客户端工具测试连接到Coolpy7Docker所在IP](/files/-Lbhb-FbdBZ3T2g239LT)

![连接成功后测试订阅及消息通信功能](/files/-LbhbQ687AtZ8_0KeCUx)

### 3.通过docker run传递启动参数到coolpy7内核

docker run 指令模式支持给镜像主程序传递参数，指令格式只需在镜像名后编写参数即可生效。

```
//请注意结尾部分与原来指令的差异
//-dt和-it两个参数为传递给coolpy7内核参数
//更多coolpy7内核参数请参阅《启动参数及内核特殊功能》章节
$ docker run -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 18083:18083 -p 5683:5683 -p 7946:7946 -p 7947:7947 --restart=always -d --name cp7 -v d:/data:/data -v d:/plugin:/plugin coolpy7/coolpy7_core -dt 100 -it 200
//如果Linux系统请换成Linux路径为v参数对应的路径
```

### 4.启动Coolpy7 Websocket Poxy代理服务器docker镜像

当Coolpy7内核运行后我们如果需要提供MQTT的Websocket能力，Websocket技术提供了网页高性能即时通信能力，通过此功能一般可以实现网页即时聊天应用或网页消息推送技术。Coolpy7工具链提供了Websocket代理服务器，名为coolpy7\_ws\_poxy，同样也已经提供了docker镜像，以下为整个启动过程，由于内核所在的已运行镜像在IP：192.168.31.221:1883，因此我们在启动coolpy7\_ws\_poxy时需要在docker run 指令传递-r参数到应用程序。

```
//拉取coolpy7 websocket 镜像
$ docker pull coolpy7/coolpy7_ws_poxy
//启动镜像 
//r参数为告知coolpy7_ws_poxy主服务位于192.168.31.221:1883
$ docker run -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 18083:18083 -p 5683:5683 -p 7946:7946 -p 7947:7947 --restart=always -d --name cp7_ws coolpy7/coolpy7_ws_poxy -r 192.168.31.221:1883

```

同样使用MQTTLens工具连接时改用ws\://方式连接到coolpy7\_ws\_poxy主系统的8083端口即可，测试镜像是否已经正常提供功能，由于此代理服务是桥接到Coolpy7内核，所以启动顺序应尽量先启动Coolpy7内核成功后再启动Coolpy7\_ws\_poxy服务。

### 5.编译Docker镜像

本章两个镜像均使用Dcokerfile进行镜像打包，开源位于<https://github.com/Coolpy7/Coolpy7/blob/master/Dockerfile>

如需自行编译Docker镜像请参阅


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/docker-bu-shu-windows-yun-hang-cp7.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
