Spaces:
Sleeping
Sleeping
| # ====== Stage 1: Build the application ====== | |
| # maven:3.9.9-eclipse-temurin-25 does not exist yet; install Maven over the official JDK 25 image instead | |
| FROM eclipse-temurin:25-jdk-jammy AS build | |
| # Install Maven 3.9.9 manually | |
| ARG MAVEN_VERSION=3.9.9 | |
| RUN apt-get update && apt-get install -y wget && \ | |
| wget -q https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz -P /tmp && \ | |
| tar -xzf /tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /opt && \ | |
| ln -s /opt/apache-maven-${MAVEN_VERSION} /opt/maven && \ | |
| rm /tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz && \ | |
| apt-get clean && rm -rf /var/lib/apt/lists/* | |
| ENV MAVEN_HOME=/opt/maven | |
| ENV PATH="${MAVEN_HOME}/bin:${PATH}" | |
| # Set working directory | |
| WORKDIR /app | |
| # Copy pom.xml and download dependencies first (to leverage Docker cache) | |
| COPY pom.xml . | |
| RUN mvn dependency:go-offline | |
| # Copy source code | |
| COPY src ./src | |
| # Package the application | |
| RUN mvn clean package -DskipTests | |
| # ====== Stage 2: Run the application ====== | |
| FROM eclipse-temurin:25-jdk-jammy | |
| # Create user with ID 1000 as required by Hugging Face | |
| RUN useradd -m -u 1000 user | |
| # Switch to the user | |
| USER user | |
| # Set home directory and update PATH for the user | |
| ENV HOME=/home/user \ | |
| PATH=/home/user/.local/bin:$PATH | |
| # Set working directory to user's home | |
| WORKDIR $HOME/app | |
| # Copy jar from build stage with proper ownership | |
| COPY --from=build --chown=user /app/target/chatbot-bridge-service-0.0.1-SNAPSHOT.jar app.jar | |
| # Expose port 7860 (Hugging Face default) | |
| EXPOSE 7860 | |
| # Run the application on port 7860 | |
| ENTRYPOINT ["java", "-jar", "app.jar", "--server.port=7860"] |