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- # ----------------------------------------------------------------------------------------------
2913ENV 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- # ----------------------------------------------------------------------------------------------
8759VOLUME /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
0 commit comments