Mosquitto 原始碼建置
從原始碼編譯 Mosquitto 1.4.11 的 Ubuntu 14.04 容器。用原始碼建置的好處是可以自行決定要不要開啟 TLS、以及調整編譯選項。
Dockerfile
FROM ubuntu:14.04.2
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y \
wget \
libwrap0-dev \
libc-ares-dev \
xsltproc
RUN wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_3.2.0-23.36_amd64.deb
RUN dpkg -i linux-libc-dev_3.2.0-23.36_amd64.deb
RUN apt-get install -y \
build-essential \
libssl-dev \
uuid-dev
WORKDIR /home/root
RUN wget https://mosquitto.org/files/source/mosquitto-1.4.11.tar.gz
RUN tar xvzf mosquitto-1.4.11.tar.gz
WORKDIR mosquitto-1.4.11
RUN make
RUN make install
USER mosquitto
WORKDIR /home/mosquitto
CMD ["su", "-", "mosquitto", "-c", "/bin/bash"]
編譯依賴
| 套件 | 用途 |
|---|---|
libwrap0-dev |
TCP Wrappers 存取控制 |
libc-ares-dev |
非同步 DNS 解析 |
xsltproc |
產生 man page |
libssl-dev |
TLS/SSL 支援 |
uuid-dev |
產生 client id |
建置與執行
# 建置映像
docker build -t mosquitto-src:1.4.11 .
# 啟動 Broker
docker run -d -p 1883:1883 --name mosquitto mosquitto-src:1.4.11 mosquitto
# 訂閱與發布測試
mosquitto_sub -h localhost -t 'sensor/#' -v
mosquitto_pub -h localhost -t 'sensor/temp' -m '25.3'
注意事項
- Dockerfile 裡的
RUN sudo dpkg -i ...在 Ubuntu 官方映像中會失敗,因為預設沒有安裝sudo,而且建置過程本來就是 root。建置時把sudo去掉即可 USER mosquitto假設make install已建立該使用者;若沒有,需先useradd -r mosquitto- Ubuntu 14.04 與 Mosquitto 1.4.11 都已終止支援,正式環境請改用較新版本
相關資源
← 回到 IoT 物聯網與訊息佇列