aboutsummaryrefslogtreecommitdiff
path: root/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile65
1 files changed, 65 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..90d28a8dc
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,65 @@
+FROM alpine:3.18
+
+########################
+# 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 && \
+ 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 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"]