# ═══════════════════════════════════════════════════════════
# 🐍 OPHION - Java Instrumented App Dockerfile
# Example showing how to add OpenTelemetry to any Java app
# ═══════════════════════════════════════════════════════════

# Build stage
FROM eclipse-temurin:21-jdk-alpine AS builder

WORKDIR /app

# Copy Maven/Gradle files (if using build tool)
COPY pom.xml* build.gradle* ./

# Copy source code
COPY src/ ./src/

# For simple example, compile directly
RUN mkdir -p target/classes && \
    javac -d target/classes src/main/java/*.java

# Package as JAR
RUN cd target/classes && \
    jar cfe ../app.jar Main .

# Runtime stage
FROM eclipse-temurin:21-jre-alpine

WORKDIR /app

# Download OpenTelemetry Java Agent
ARG OTEL_AGENT_VERSION=2.1.0
RUN wget -q https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v${OTEL_AGENT_VERSION}/opentelemetry-javaagent.jar \
    -O /opt/opentelemetry-javaagent.jar

# Copy the built application
COPY --from=builder /app/target/app.jar .

# Expose port
EXPOSE 8080

# Start with OpenTelemetry Java Agent
# The JAVA_TOOL_OPTIONS env var in docker-compose.yml enables the agent
CMD ["java", "-jar", "app.jar"]
