Skip to content

Commit e13ca22

Browse files
committed
merge changes into main
1 parent 6cd3606 commit e13ca22

File tree

4 files changed

+54
-87
lines changed

4 files changed

+54
-87
lines changed

src/main/docker/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ RUN apk add --no-cache dos2unix shadow wget && \
5353
chown -R messaginguser:messaginggroup /data /maps-%%MAPS_VERSION%% && \
5454
chmod -R 755 /maps-%%MAPS_VERSION%%
5555

56-
EXPOSE 9000/tcp 8080/tcp 8778/tcp 4222/tcp \
56+
EXPOSE 9000/tcp 8080/tcp 8778/tcp 4222/tcp 1883/tcp \
5757
1884/udp 5683/udp 2442/udp
5858

5959
VOLUME /data
6060

61-
CMD su -c "ulimit -n 100000 && ./maps-%%MAPS_VERSION%%/bin/startDocker.sh" messaginguser
61+
CMD su -c "ulimit -n 100000 && ./maps-%%MAPS_VERSION%%/bin/startDocker.sh" messaginguser

src/main/docker/arm/Dockerfile

Lines changed: 43 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,61 @@
11
# syntax=docker/dockerfile:1
22

3-
#
43
#
54
# Copyright [ 2020 - 2024 ] [Matthew Buckton]
65
# Copyright [ 2024 - 2025 ] [Maps Messaging B.V.]
76
#
8-
# Licensed under the Apache License, Version 2.0 (the "License");
9-
# you may not use this file except in compliance with the License.
10-
# You may obtain a copy of the License at
11-
#
12-
# http://www.apache.org/licenses/LICENSE-2.0
13-
#
14-
# Unless required by applicable law or agreed to in writing, software
15-
# distributed under the License is distributed on an "AS IS" BASIS,
16-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17-
# See the License for the specific language governing permissions and
18-
# limitations under the License.
7+
# Licensed under the Apache License, Version 2.0 (the "License");
8+
# http://www.apache.org/licenses/LICENSE-2.0
199
#
2010

21-
#----------------------------------------------------------------------------------------------
22-
# Base: Alpine (ARM64)
23-
#----------------------------------------------------------------------------------------------
24-
FROM arm64v8/alpine:3.22.1
11+
FROM alpine:3.22.1
2512

26-
#----------------------------------------------------------------------------------------------
27-
# Locale + Java home + PATH
28-
#----------------------------------------------------------------------------------------------
2913
ENV LANG=en_US.UTF-8 \
3014
LANGUAGE=en_US:en \
3115
LC_ALL=en_US.UTF-8 \
3216
JAVA_HOME=/usr/lib/jvm/zulu-21 \
3317
PATH=/usr/lib/jvm/zulu-21/bin:$PATH
3418

35-
#----------------------------------------------------------------------------------------------
36-
# Single-layer build: install Zulu JDK 21, server payload, and configure everything
37-
#----------------------------------------------------------------------------------------------
38-
RUN set -eux; \
39-
ZULU_ARCH=zulu21.44.17-ca-jdk21.0.8-linux_musl_aarch64.tar.gz; \
40-
ZULU_DIR="${ZULU_ARCH%.tar.gz}"; \
41-
INSTALL_DIR="$(dirname "$JAVA_HOME")"; \
42-
apk add --no-cache ca-certificates wget tar gzip coreutils dos2unix; \
43-
update-ca-certificates; \
44-
\
45-
# Install Zulu JDK
46-
wget -q "https://cdn.azul.com/zulu/bin/${ZULU_ARCH}"; \
47-
mkdir -p "${INSTALL_DIR}"; \
48-
tar -xf "${ZULU_ARCH}" -C "${INSTALL_DIR}"; \
49-
rm -f "${ZULU_ARCH}"; \
50-
mv "${INSTALL_DIR}/${ZULU_DIR}" "${JAVA_HOME}"; \
51-
chmod +x "${JAVA_HOME}/bin/"*; \
52-
cd /usr/bin; find "${JAVA_HOME}/bin" -type f -perm -a=x -exec ln -s {} . \;; \
53-
\
54-
# Install Maps Messaging
55-
cd /; \
56-
wget -q "https://github.com/Maps-Messaging/mapsmessaging_server/releases/download/%%MAPS_VERSION%%/maps-%%MAPS_VERSION%%-install.tar.gz"; \
57-
tar -xf "maps-%%MAPS_VERSION%%-install.tar.gz"; \
58-
rm "maps-%%MAPS_VERSION%%-install.tar.gz"; \
59-
\
60-
# Configure scripts and configs
61-
chmod +x "maps-%%MAPS_VERSION%%/bin/startDocker.sh"; \
62-
dos2unix "maps-%%MAPS_VERSION%%/bin/startDocker.sh"; \
63-
mv "maps-%%MAPS_VERSION%%/conf/logback.xml" "maps-%%MAPS_VERSION%%/conf/logback.xml_orig"; \
64-
mv "maps-%%MAPS_VERSION%%/conf/docker_logback.xml" "maps-%%MAPS_VERSION%%/conf/logback.xml"; \
65-
mv "maps-%%MAPS_VERSION%%/conf/NetworkManager.yaml" "maps-%%MAPS_VERSION%%/conf/NetworkManager.yaml_orig"; \
66-
mv "maps-%%MAPS_VERSION%%/conf/NetworkManagerDocker.yaml" "maps-%%MAPS_VERSION%%/conf/NetworkManager.yaml"; \
67-
\
68-
# Static files + data dir
69-
mkdir -p /data; \
70-
mv "/maps-%%MAPS_VERSION%%/www" "/data/www"; \
71-
\
72-
# Runtime user
73-
addgroup -S messaginggroup; \
74-
adduser -S messaginguser -G messaginggroup -s /bin/sh -h "/maps-%%MAPS_VERSION%%"; \
75-
chown -R messaginguser:messaginggroup /data "/maps-%%MAPS_VERSION%%"; \
76-
chmod -R 755 "/maps-%%MAPS_VERSION%%"
19+
# Install required tools and JDK
20+
RUN apk add --no-cache dos2unix shadow wget && \
21+
ZULU_ARCH=zulu21.44.17-ca-jdk21.0.8-linux_musl_x64.tar.gz && \
22+
INSTALL_DIR=$(dirname "$JAVA_HOME") && \
23+
ZULU_DIR=$(basename ${ZULU_ARCH} .tar.gz) && \
24+
wget -q https://cdn.azul.com/zulu/bin/${ZULU_ARCH} && \
25+
mkdir -p ${INSTALL_DIR} && \
26+
tar -xf ${ZULU_ARCH} -C ${INSTALL_DIR} && \
27+
rm -f ${ZULU_ARCH} && \
28+
mv ${INSTALL_DIR}/${ZULU_DIR} ${JAVA_HOME} && \
29+
find ${JAVA_HOME}/bin -type f -perm -a=x -exec ln -s {} /usr/bin/ \; && \
30+
\
31+
# Download and extract the messaging server
32+
wget -q https://github.com/Maps-Messaging/mapsmessaging_server/releases/download/%%MAPS_VERSION%%/maps-%%MAPS_VERSION%%-install.tar.gz && \
33+
tar -xf maps-%%MAPS_VERSION%%-install.tar.gz && \
34+
rm maps-%%MAPS_VERSION%%-install.tar.gz && \
35+
\
36+
# Setup startup script
37+
chmod +x maps-%%MAPS_VERSION%%/bin/startDocker.sh && \
38+
dos2unix maps-%%MAPS_VERSION%%/bin/startDocker.sh && \
39+
\
40+
# Configure logging and network
41+
mv maps-%%MAPS_VERSION%%/conf/logback.xml maps-%%MAPS_VERSION%%/conf/logback.xml_orig && \
42+
mv maps-%%MAPS_VERSION%%/conf/docker_logback.xml maps-%%MAPS_VERSION%%/conf/logback.xml && \
43+
mv maps-%%MAPS_VERSION%%/conf/NetworkManager.yaml maps-%%MAPS_VERSION%%/conf/NetworkManager.yaml_orig && \
44+
mv maps-%%MAPS_VERSION%%/conf/NetworkManagerDocker.yaml maps-%%MAPS_VERSION%%/conf/NetworkManager.yaml && \
45+
\
46+
# Setup data volume and static files
47+
mkdir -p /data && \
48+
mv maps-%%MAPS_VERSION%%/www /data/www && \
49+
\
50+
# Add user and permissions
51+
addgroup -S messaginggroup && \
52+
adduser -S messaginguser -G messaginggroup -s /bin/sh -h /maps-%%MAPS_VERSION%% && \
53+
chown -R messaginguser:messaginggroup /data /maps-%%MAPS_VERSION%% && \
54+
chmod -R 755 /maps-%%MAPS_VERSION%%
55+
56+
EXPOSE 9000/tcp 8080/tcp 8778/tcp 4222/tcp 1883/tcp \
57+
1884/udp 5683/udp 2442/udp
7758

78-
#----------------------------------------------------------------------------------------------
79-
# Ports
80-
#----------------------------------------------------------------------------------------------
81-
EXPOSE 9000/tcp 8080/tcp 8778/tcp 4222/tcp
82-
EXPOSE 1700/udp 1884/udp 5683/udp 2442/udp
83-
84-
#----------------------------------------------------------------------------------------------
85-
# Data volume
86-
#----------------------------------------------------------------------------------------------
8759
VOLUME /data
8860

89-
#----------------------------------------------------------------------------------------------
90-
# Run as non-root from install dir
91-
#----------------------------------------------------------------------------------------------
92-
USER messaginguser
93-
WORKDIR /maps-%%MAPS_VERSION%%
94-
95-
# Increase file descriptors and start
96-
CMD sh -lc 'ulimit -n 100000 && ./bin/startDocker.sh'
61+
CMD su -c "ulimit -n 100000 && ./maps-%%MAPS_VERSION%%/bin/startDocker.sh" messaginguser

src/main/resources/NetworkManagerDocker.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ NetworkManager:
7878
auth: default
7979

8080
- name: "MQTT Interface"
81-
url: tcp://:::1883/
81+
url: tcp://0.0.0.0:1883/
8282
protocol: mqtt
8383
auth: default
8484
-

src/main/scripts/startDocker.sh

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#
2121
# Configure the java command on the path
2222
#
23-
export JAVA_HOME=/usr/lib/jvm/zulu-17
23+
export JAVA_HOME=/usr/lib/jvm/zulu-21
2424
export PATH=$JAVA_HOME/bin:$PATH
2525

2626
echo $PATH
@@ -38,7 +38,7 @@ export CONSUL_URL
3838
echo $CONSUL_URL
3939

4040
if [ -z ${MAPS_HOME+x} ];
41-
then export MAPS_HOME=/message_daemon-$VERSION;
41+
then export MAPS_HOME=/maps-$VERSION;
4242
fi
4343

4444
if [ -z ${MAPS_DATA+x} ];
@@ -56,7 +56,11 @@ export MAPS_CONF=$MAPS_HOME/conf
5656
#
5757
# Note::: The conf directory must be at the start else the configuration is loaded from the jars
5858
#
59-
export CLASSPATH="$MAPS_CONF":$MAPS_LIB/maps-$VERSION.jar:"$MAPS_LIB/*"
59+
CLASSPATH="$MAPS_CONF:$MAPS_LIB/maps-$VERSION.jar"
60+
for jar in "$MAPS_LIB"/*.jar; do
61+
[[ "$jar" != "$MAPS_LIB/maps-$VERSION.jar" ]] && CLASSPATH="$CLASSPATH:$jar"
62+
done
63+
6064
#
6165
# Now start the the daemon
6266
java -classpath $CLASSPATH $JAVA_OPTS \
@@ -66,6 +70,4 @@ java -classpath $CLASSPATH $JAVA_OPTS \
6670
-DConsulToken="${CONSUL_TOKEN}" \
6771
-Djava.security.auth.login.config="${MAPS_CONF}/jaasAuth.config" \
6872
-DMAPS_HOME="${MAPS_HOME}" \
69-
io.mapsmessaging.MessageDaemon
70-
71-
73+
io.mapsmessaging.MessageDaemon

0 commit comments

Comments
 (0)