aboutsummaryrefslogtreecommitdiff
path: root/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile70
1 files changed, 70 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..e73f81f7c
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,70 @@
+FROM alpine:3.18 as build_server
+
+########################
+# Build Traccar server #
+########################
+
+RUN apk add --no-cache --no-progress \
+ gcompat \
+ libgcc \
+ libstdc++ \
+ openjdk11-jre-headless
+
+WORKDIR /build
+
+ADD build.gradle ./
+ADD gradle ./gradle
+ADD gradlew ./
+ADD settings.gradle ./
+ADD src ./src
+
+RUN ./gradlew assemble
+
+FROM alpine:3.18 as build_web
+
+####################
+# Build Traccar UI #
+####################
+
+RUN apk add --no-cache --no-progress npm
+
+WORKDIR /build
+
+ADD traccar-web/modern/.env ./
+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 'timeout=60000' > ~/.npmrc && \
+ npm install && \
+ npm run build
+
+FROM alpine:3.18
+
+ARG GIT_COMMIT=unspecified
+LABEL git_commit=$GIT_COMMIT
+
+##################
+# Deploy locally #
+##################
+
+RUN apk add --no-cache --no-progress openjdk11-jre-headless
+
+WORKDIR /opt/traccar
+
+COPY --from=build_server /build/target .
+COPY --from=build_web /build/build ./modern
+
+ADD setup/default.xml ./conf/default.xml
+ADD setup/traccar.xml ./conf/traccar.xml
+ADD schema ./schema
+ADD templates ./templates
+
+RUN mkdir logs/ data/ media/
+
+CMD ["/usr/bin/java", "-Xms1g", "-Xms1g", "-jar", "tracker-server.jar", "-c", "conf/traccar.xml"]