port 8081 is the management API in 4.x in 5.0 api port is 18083 (same as for serving the dashboard)
77 lines
1.7 KiB
Docker
77 lines
1.7 KiB
Docker
ARG BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-15:1.13.3-24.2.1-1-alpine3.15.1
|
|
ARG RUN_FROM=alpine:3.15.1
|
|
FROM ${BUILD_FROM} AS builder
|
|
|
|
RUN apk add --no-cache \
|
|
autoconf \
|
|
automake \
|
|
bash \
|
|
bison \
|
|
bsd-compat-headers \
|
|
coreutils \
|
|
curl \
|
|
flex \
|
|
g++ \
|
|
gcc \
|
|
git \
|
|
jq \
|
|
libc-dev \
|
|
libstdc++ \
|
|
libtool \
|
|
make \
|
|
ncurses-dev \
|
|
openssl-dev \
|
|
perl
|
|
|
|
COPY . /emqx
|
|
|
|
ARG EMQX_NAME=emqx
|
|
ENV EMQX_RELUP=false
|
|
|
|
RUN export PROFILE=${EMQX_NAME%%-elixir} \
|
|
&& export EMQX_NAME1=$EMQX_NAME \
|
|
&& export EMQX_NAME=$PROFILE \
|
|
&& export EMQX_LIB_PATH="_build/$EMQX_NAME/lib" \
|
|
&& export EMQX_REL_PATH="/emqx/_build/$EMQX_NAME/rel/emqx" \
|
|
&& export EMQX_REL_FORM='docker' \
|
|
&& cd /emqx \
|
|
&& rm -rf $EMQX_LIB_PATH \
|
|
&& make $EMQX_NAME1 \
|
|
&& mkdir -p /emqx-rel \
|
|
&& mv $EMQX_REL_PATH /emqx-rel
|
|
|
|
FROM $RUN_FROM
|
|
|
|
COPY deploy/docker/docker-entrypoint.sh /usr/bin/
|
|
COPY --from=builder /emqx-rel/emqx /opt/emqx
|
|
|
|
RUN ln -s /opt/emqx/bin/* /usr/local/bin/
|
|
RUN apk add --no-cache curl ncurses-libs openssl sudo libstdc++ bash
|
|
|
|
WORKDIR /opt/emqx
|
|
|
|
RUN adduser -D -u 1000 emqx \
|
|
&& echo "emqx ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
|
|
|
|
RUN chgrp -Rf emqx /opt/emqx && chmod -Rf g+w /opt/emqx \
|
|
&& chown -Rf emqx /opt/emqx
|
|
|
|
USER emqx
|
|
|
|
VOLUME ["/opt/emqx/log", "/opt/emqx/data"]
|
|
|
|
# emqx will occupy these port:
|
|
# - 1883 port for MQTT
|
|
# - 8083 for WebSocket/HTTP
|
|
# - 8084 for WSS/HTTPS
|
|
# - 8883 port for MQTT(SSL)
|
|
# - 11883 port for internal MQTT/TCP
|
|
# - 18083 for dashboard and API
|
|
# - 4370 default Erlang distrbution port
|
|
# - 5369 for backplain gen_rpc
|
|
EXPOSE 1883 8083 8084 8883 11883 18083 4370 5369
|
|
|
|
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
|
|
|
|
CMD ["/opt/emqx/bin/emqx", "foreground"]
|