From f6e206889feb2c72504aeeea21391c94a1d05466 Mon Sep 17 00:00:00 2001 From: adelyaou Date: Mon, 11 Aug 2025 16:36:59 +0700 Subject: [PATCH] Multi-Language Hello World Suite --- go/Dockerfile | 9 +++++++++ go/main.go | 13 +++++++++++++ java/Dockerfile | 15 +++++++++++++++ java/Main.java | 14 ++++++++++++++ nodejs/Dockerfile | 19 +++++++++++++++++++ nodejs/app.js | 12 ++++++++++++ nodejs/package-lock.json | 13 +++++++++++++ nodejs/package.json | 12 ++++++++++++ python/Dockerfile | 22 ++++++++++++++++++++++ python/app.py | 8 ++++++++ python/requirements.txt | 0 test/Dockerfile | 4 ++++ 12 files changed, 141 insertions(+) create mode 100644 go/Dockerfile create mode 100644 go/main.go create mode 100644 java/Dockerfile create mode 100644 java/Main.java create mode 100644 nodejs/Dockerfile create mode 100644 nodejs/app.js create mode 100644 nodejs/package-lock.json create mode 100644 nodejs/package.json create mode 100644 python/Dockerfile create mode 100644 python/app.py create mode 100644 python/requirements.txt create mode 100644 test/Dockerfile diff --git a/go/Dockerfile b/go/Dockerfile new file mode 100644 index 0000000..6ae7cda --- /dev/null +++ b/go/Dockerfile @@ -0,0 +1,9 @@ +FROM golang:1.20-alpine AS builder + +WORKDIR /app + +COPY . . +RUN go mod init goapp && go mod tidy +RUN go build -o main . + +CMD ["./main"] diff --git a/go/main.go b/go/main.go new file mode 100644 index 0000000..e3ebef5 --- /dev/null +++ b/go/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "fmt" + "time" +) + +func main() { + for i := 1; i <= 10; i++ { + fmt.Printf("Angka ke-%d\n", i) + time.Sleep(1 * time.Minute) // jeda 1 menit + } +} diff --git a/java/Dockerfile b/java/Dockerfile new file mode 100644 index 0000000..49c75d5 --- /dev/null +++ b/java/Dockerfile @@ -0,0 +1,15 @@ +FROM openjdk:17-jdk-slim AS builder + +WORKDIR /app + +COPY . . + +RUN javac Main.java + +FROM eclipse-temurin:17-jre + +WORKDIR /app + +COPY --from=builder /app/Main.class . + +ENTRYPOINT ["java", "Main"] diff --git a/java/Main.java b/java/Main.java new file mode 100644 index 0000000..838a244 --- /dev/null +++ b/java/Main.java @@ -0,0 +1,14 @@ +import java.util.concurrent.TimeUnit; + +public class Main { + public static void main(String[] args) { + for (int i = 1; i <= 10; i++) { + System.out.println("Angka ke-" + i); + try { + TimeUnit.MINUTES.sleep(5); // jeda 1 menit + } catch (InterruptedException e) { + System.out.println("Terjadi kesalahan saat menunggu."); + } + } + } +} diff --git a/nodejs/Dockerfile b/nodejs/Dockerfile new file mode 100644 index 0000000..62540da --- /dev/null +++ b/nodejs/Dockerfile @@ -0,0 +1,19 @@ +FROM node:18-alpine AS builder + +WORKDIR /app + +COPY package.json package-lock.json ./ +RUN npm ci --only=production + +COPY . . + +RUN npm run + +FROM node:18-alpine + +WORKDIR /app + +COPY --from=builder /app ./ + +CMD ["node", "app.js"] + diff --git a/nodejs/app.js b/nodejs/app.js new file mode 100644 index 0000000..b825c10 --- /dev/null +++ b/nodejs/app.js @@ -0,0 +1,12 @@ +function delay(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +async function loopWithDelay() { + for (let i = 1; i <= 10; i++) { + console.log(`Angka ke-${i}`); + await delay(60000); // delay 1 menit (60.000 ms) + } +} + +loopWithDelay(); diff --git a/nodejs/package-lock.json b/nodejs/package-lock.json new file mode 100644 index 0000000..fae3852 --- /dev/null +++ b/nodejs/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "nodejs", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "nodejs", + "version": "1.0.0", + "license": "ISC" + } + } +} diff --git a/nodejs/package.json b/nodejs/package.json new file mode 100644 index 0000000..d57d93f --- /dev/null +++ b/nodejs/package.json @@ -0,0 +1,12 @@ +{ + "name": "nodejs", + "version": "1.0.0", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "" +} diff --git a/python/Dockerfile b/python/Dockerfile new file mode 100644 index 0000000..50f071f --- /dev/null +++ b/python/Dockerfile @@ -0,0 +1,22 @@ +FROM python:3.9-alpine AS builder + +WORKDIR /app + +# Install build dependencies (needed for some Python packages) +RUN apk add --no-cache gcc musl-dev linux-headers + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +FROM python:3.9-alpine + +WORKDIR /app + +# Install runtime dependencies if needed (uncomment if your app needs them) +# RUN apk add --no-cache libstdc++ + +COPY --from=builder /app /app + +CMD ["python", "app.py"] diff --git a/python/app.py b/python/app.py new file mode 100644 index 0000000..843fd6c --- /dev/null +++ b/python/app.py @@ -0,0 +1,8 @@ +# app.py +import time + +print("Starting loop...") + +while True: + print("App is running...") + time.sleep(5) diff --git a/python/requirements.txt b/python/requirements.txt new file mode 100644 index 0000000..e69de29 diff --git a/test/Dockerfile b/test/Dockerfile new file mode 100644 index 0000000..c8dbc48 --- /dev/null +++ b/test/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu + +RUN apt-get update +CMD ["sleep", "1d"]