FROM alpine:3.18 ARG GIT_COMMIT=unspecified LABEL git_commit=$GIT_COMMIT ######################## # Build Traccar server # ######################## RUN apk add --no-cache --no-progress \ gcompat \ libgcc \ libstdc++ \ openjdk11-jre-headless WORKDIR /opt/build-server ADD build.gradle ./ ADD gradle ./gradle ADD gradlew ./ ADD settings.gradle ./ ADD src ./src RUN ./gradlew assemble #################### # Build Traccar UI # #################### RUN apk add --no-cache --no-progress npm WORKDIR /opt/build-modern ADD traccar-web/modern/.eslintrc.json ./ ADD traccar-web/modern/.npmrc ./ ADD traccar-web/modern/index.html ./ ADD traccar-web/modern/package.json ./ ADD traccar-web/modern/package-lock.json ./ ADD traccar-web/modern/vite.config.js ./ ADD traccar-web/modern/public/ ./public ADD traccar-web/modern/src/ ./src RUN echo "ESLINT_NO_DEV_ERRORS=false" > .env && \ echo 'VITE_APP_VERSION=$npm_package_version' >> .env && \ echo 'timeout=60000' > ~/.npmrc && \ npm install && \ npm run build ################## # Deploy locally # ################## RUN mkdir -p /opt/traccar && \ cp -r /opt/build-server/target/* /opt/traccar/ && \ cp -r /opt/build-modern/build /opt/traccar/modern ADD setup/default.xml /opt/traccar/conf/default.xml ADD setup/traccar.xml /opt/traccar/conf/traccar.xml ADD schema /opt/traccar/schema ADD templates /opt/traccar/templates ########### # Cleanup # ########### RUN rm -r /opt/build-server && \ rm -r /opt/build-modern WORKDIR /opt/traccar CMD ["/usr/bin/java", "-Xms1g", "-Xms1g", "-jar", "tracker-server.jar", "-c", "conf/traccar.xml"]