# Stage 1: Build the application
FROM maven:3.8.6-openjdk-11 AS build

# Install Node.js and Grunt (required by the prod profile for JS/CSS compilation)
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \
    apt-get install -y nodejs && \
    npm install -g grunt-cli

COPY . /usr/src/app
WORKDIR /usr/src/app

# Build with the 'prod' profile so Grunt compiles JS/CSS into dist/
RUN mvn clean package -DskipTests -Pprod -pl docs-web -am

# Stage 2: Runtime environment
FROM ubuntu:22.04
LABEL maintainer="b.gamard@sismics.com"

ENV DEBIAN_FRONTEND noninteractive
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/
ENV JAVA_OPTIONS -Dfile.encoding=UTF-8 -Xmx1g
ENV JETTY_VERSION 11.0.20
ENV JETTY_HOME /opt/jetty

# Install packages
RUN apt-get update && \
    apt-get -y -q --no-install-recommends install \
    vim less procps unzip wget tzdata openjdk-11-jdk \
    ffmpeg \
    mediainfo \
    tesseract-ocr \
    tesseract-ocr-vie \
    tesseract-ocr-fra \
    tesseract-ocr-eng \
    && apt-get clean && \
    rm -rf /var/lib/apt/lists/*
RUN dpkg-reconfigure -f noninteractive tzdata

# Install Jetty
RUN wget -nv -O /tmp/jetty.tar.gz \
    "https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/${JETTY_VERSION}/jetty-home-${JETTY_VERSION}.tar.gz" \
    && tar xzf /tmp/jetty.tar.gz -C /opt \
    && mv /opt/jetty* /opt/jetty \
    && useradd jetty -U -s /bin/false \
    && chown -R jetty:jetty /opt/jetty \
    && mkdir /opt/jetty/webapps \
    && chmod +x /opt/jetty/bin/jetty.sh

EXPOSE 8080

# Install app
RUN mkdir /app && \
    cd /app && \
    java -jar /opt/jetty/start.jar --add-modules=server,http,webapp,deploy

# Copy build artifacts from Stage 1
COPY --from=build /usr/src/app/docs.xml /app/webapps/docs.xml
COPY --from=build /usr/src/app/docs-web/target/docs-web-1.12-SNAPSHOT.war /app/webapps/docs.war

WORKDIR /app

CMD ["java", "-jar", "/opt/jetty/start.jar"]
