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 运维开发玄德公 阅读(119) 评论(0) 编辑 收藏 举报 来源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了