docker-compose启动EMQX
1. 准备
- 服务器优化
按《01-EMQ的服务器调优》文档操作
-
docker已安装
-
docker-compose已安装
2. 服务启动
2.1 准备
# mkdir /data/emqx
# ln -s /data/emqx /opt/emqx
2.2 yam文件
在
/data/emqx
下创建docker-compose.yaml
version: '3'
services:
emqx:
image: "harbocto.xxx.com.cn/public/emqx:4.2.3"
container_name: "emqx-4.2.3"
environment:
- EMQX_LOADED_PLUGINS="emqx_management,emqx_auth_http,emqx_dashboard"
- EMQX_DASHBOARD__DEFAULT_USER__LOGIN=liubei
- EMQX_DASHBOARD__DEFAULT_USER__PASSWORD=liubei@2021
- EMQX_NODE__MAX_PORTS=65535
- EMQX_MQTT__MAX_PACKET_SIZE=16MB
ports:
- 18083:18083
- 1883:1883
- 8080:8081
- 8883:8883
volumes:
- ./logs:/opt/emqx/log
- /etc/localtime:/etc/localtime
restart: always
2.3 关于日志挂载
上边yaml文件可见 ./logs:/opt/emqx/log
,说明我们把日志挂载出来了,当前目录(data/emqx
目录)下 logs
目录。
但是这里有个问题:容器中使用的并不是root用户,如果我们用root用户启动容器,则docker在宿主机上创建的logs
目录的属主是 root,那么容器中的服务会没有权限写,有如下两个解决方案:
- 给logs目录777 权限(不推荐)
- 修改logs目录属主(推荐)
一般容器中的用户会映射到宿主机中 用户ID是 1001这个用户。为了保险我们可以自己实测:
1)创建logs目录给777 权限
2)启动服务,查看容器在logs目录下创建的文件属主(比如看到是用户A)
3)停止容器,删除logs目录
4)重新创建logs目录,将主、组都修改为用户A
2.4 启动服务
- 启动
[root@liubei emqx]# docker-compose ps
- 查看
[root@liubei emqx]# docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------------------------------------------------------
emqx-4.2.3 /usr/bin/docker-entrypoint ... Up 11883/tcp, 0.0.0.0:18083->18083/tcp,:::18083->18083/tcp,
0.0.0.0:1883->1883/tcp,:::1883->1883/tcp, 4369/tcp, 4370/tcp,
5369/tcp, 6369/tcp, 0.0.0.0:8080->8081/tcp,:::8080->8081/tcp,
8083/tcp, 8084/tcp, 0.0.0.0:8883->8883/tcp,:::8883->8883/tcp
- web访问
URL:http://IP:18083
posted on 2021-12-18 16:34 运维开发玄德公 阅读(106) 评论(0) 编辑 收藏 举报 来源