diff --git a/java-k8s-lab/Dockerfile b/java-k8s-lab/Dockerfile new file mode 100644 index 0000000..beba038 --- /dev/null +++ b/java-k8s-lab/Dockerfile @@ -0,0 +1,25 @@ +# --------- Build Stage --------- +FROM adoptopenjdk:11 as build +WORKDIR /app + +# Copy the Java source file into the container +COPY HelloController.java . + +# Compile the Java source file +RUN javac HelloController.java + +# Package all compiled classes (including inner classes) into an executable jar +RUN jar cfe app.jar HelloController *.class + +# --------- Run Stage --------- +FROM adoptopenjdk:11-jre-hotspot +WORKDIR /app + +# Copy the executable jar from the build stage +COPY --from=build /app/app.jar . + +# Expose the port on which the app listens +EXPOSE 8090 + +# Run the jar file +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file diff --git a/java-k8s-lab/HelloController.java b/java-k8s-lab/HelloController.java new file mode 100644 index 0000000..f61ef20 --- /dev/null +++ b/java-k8s-lab/HelloController.java @@ -0,0 +1,27 @@ +import com.sun.net.httpserver.HttpServer; + import com.sun.net.httpserver.HttpHandler; + import com.sun.net.httpserver.HttpExchange; + import java.io.IOException; + import java.io.OutputStream; + import java.net.InetSocketAddress; + + public class HelloController { + public static void main(String[] args) throws IOException { + HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0); + server.createContext("/", new MyHandler()); + server.setExecutor(null); + server.start(); + System.out.println("Server started on port 8080..."); + } + + static class MyHandler implements HttpHandler { + @Override + public void handle(HttpExchange t) throws IOException { + String response = "Hello, Kubernetes!"; + t.sendResponseHeaders(200, response.length()); + try (OutputStream os = t.getResponseBody()) { + os.write(response.getBytes()); + } + } + } + } diff --git a/java-k8s-lab/deployment.yaml b/java-k8s-lab/deployment.yaml new file mode 100644 index 0000000..29c8c4a --- /dev/null +++ b/java-k8s-lab/deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: java-app-deployment +spec: + replicas: 1 + selector: + matchLabels: + app: java-app + template: + metadata: + labels: + app: java-app + spec: + containers: + - name: java-app-container + image: feepieper/my-java-app:1.0 + ports: + - containerPort: 8080 \ No newline at end of file diff --git a/java-k8s-lab/service.yaml b/java-k8s-lab/service.yaml new file mode 100644 index 0000000..ec4b10c --- /dev/null +++ b/java-k8s-lab/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: java-app-service +spec: + type: NodePort + selector: + app: java-app + ports: + - protocol: TCP + port: 80 # The service port + targetPort: 8080 # Container's port + nodePort: 30090 # Node port (optional) \ No newline at end of file