FROM node:19-alpine
WORKDIR /tmp/build/
COPY ./frontend/ .
RUN export NODE_OPTIONS=--openssl-legacy-provider && npm install && npm run build

FROM eclipse-temurin:17-jdk
WORKDIR /tmp/compile/
COPY ./ .
COPY --from=0 /tmp/build/dist/ ./src/main/resources/static/
RUN sed -i 's/\r$//' gradlew && chmod +x gradlew && ./gradlew --no-daemon bootJar

FROM eclipse-temurin:17-jre
WORKDIR /app
RUN apt update && apt install -y libpcap0.8 && rm -rf /var/lib/apt/lists/*
COPY --from=1 /tmp/compile/build/libs/packmate-*-SNAPSHOT.jar app.jar

CMD [ "java", "-Djava.net.preferIPv4Stack=true", "-Djava.net.preferIPv4Addresses=true",  \
      "-jar", "/app/app.jar", "--spring.datasource.url=jdbc:postgresql://127.0.0.1:65001/packmate", \
      "--spring.datasource.password=${DB_PASSWORD}", \
      "--packmate.capture-mode=${MODE}", "--packmate.pcap-file=${PCAP_FILE}", \
      "--packmate.interface-name=${INTERFACE}", "--packmate.local-ip=${LOCAL_IP}", \
      "--packmate.web.account-login=${WEB_LOGIN}", "--packmate.web.account-password=${WEB_PASSWORD}", \
      "--packmate.capture.workers=${CAPTURE_WORKERS}", \
      "--packmate.capture.queue-capacity=${CAPTURE_QUEUE_CAPACITY}", \
      "--packmate.capture.buffer-size-bytes=${CAPTURE_BUFFER_SIZE_BYTES}", \
      "--packmate.capture.shutdown-timeout-seconds=${CAPTURE_SHUTDOWN_TIMEOUT_SECONDS}", \
      "--packmate.cleanup.enabled=${OLD_STREAMS_CLEANUP_ENABLED}", \
      "--packmate.cleanup.interval-seconds=${OLD_STREAMS_CLEANUP_INTERVAL_SECONDS}", \
      "--packmate.cleanup.max-run-seconds=${OLD_STREAMS_CLEANUP_MAX_RUN_SECONDS}", \
      "--packmate.cleanup.commit-grace-seconds=${OLD_STREAMS_CLEANUP_COMMIT_GRACE_SECONDS}", \
      "--packmate.cleanup.threshold=${OLD_STREAMS_CLEANUP_THRESHOLD}", \
      "--packmate.cleanup.batch-size=${OLD_STREAMS_CLEANUP_BATCH_SIZE}", \
      "--packmate.cleanup.max-batches-per-run=${OLD_STREAMS_CLEANUP_MAX_BATCHES_PER_RUN}", \
      "--packmate.cleanup.max-packets-per-batch=${OLD_STREAMS_CLEANUP_MAX_PACKETS_PER_BATCH}", \
      "--packmate.cleanup.max-matches-per-batch=${OLD_STREAMS_CLEANUP_MAX_MATCHES_PER_BATCH}", \
      "--packmate.cleanup.max-bytes-per-batch=${OLD_STREAMS_CLEANUP_MAX_BYTES_PER_BATCH}", \
      "--packmate.cleanup.statement-timeout-seconds=${OLD_STREAMS_CLEANUP_STATEMENT_TIMEOUT_SECONDS}", \
      "--packmate.cleanup.lock-timeout-seconds=${OLD_STREAMS_CLEANUP_LOCK_TIMEOUT_SECONDS}", \
      "--server.port=65000", "--server.address=0.0.0.0" \
]

EXPOSE 65000
