← Kursa Dön
💻

Dockerfile Builder

Kolay
100 puan · Java

Verilen yapılandırma parametrelerine göre (base image, port, JAR adı, ortam değişkenleri) geçerli bir Dockerfile içeriği üreten bir Java programı yazın. Program stdin'den satır satır konfigürasyon okur ve stdout'a Dockerfile çıktısı verir.

📋 Talimatlar

Dockerfile Builder

Bu ödevde stdin'den okunan yapılandırma parametrelerine göre geçerli bir Dockerfile içeriği üreten bir Java programı yazacaksınız.

Girdi Formatı

Program sırasıyla şu satırları okur:

  1. Base Image — Docker base image adı (örn: eclipse-temurin:21-jre-alpine)
  2. JAR Adı — Uygulamanın JAR dosyası adı (örn: myapp.jar)
  3. Port — Expose edilecek port numarası (örn: 8080)
  4. Ortam Değişkeni Sayısı (N) — Kaç adet ENV satırı olacağı
  5. N adet KEY=VALUE satırı — Her biri bir ortam değişkeni tanımlar

Üretilecek Dockerfile Yapısı

Aşağıdaki sırayla satırlar üretilmelidir:

FROM <baseImage>
WORKDIR /app
COPY <jarName> app.jar
ENV KEY1 VALUE1
ENV KEY2 VALUE2
EXPOSE <port>
ENTRYPOINT ["java", "-jar", "app.jar"]

Kurallar

  • WORKDIR her zaman /app olmalıdır.
  • COPY komutu verilen JAR adını app.jar olarak kopyalar.
  • ENV satırlarında format: ENV KEY VALUE (girdi KEY=VALUE şeklinde gelir, = işaretinden split edin, çıktıda = yerine boşluk kullanın).
  • Ortam değişkeni sayısı 0 ise ENV satırı hiç yazılmaz.
  • ENTRYPOINT satırında çift tırnaklar olduğu gibi yazdırılmalıdır.
  • Çıktının sonunda fazladan boş satır olmamalıdır.

İpuçları

  • StringBuilder kullanarak Dockerfile içeriğini satır satır oluşturabilirsiniz.
  • split("=", 2) ile KEY ve VALUE'yu ayırın (VALUE içinde = olabilir).
  • Her satırı System.out.println() ile yazdırabilirsiniz ancak son satırdan sonra ekstra newline olmamasına dikkat edin.

🧪 Örnek Test Senaryoları

Girdi
eclipse-temurin:21-jre-alpine
myapp.jar
8080
0
Beklenen Çıktı
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY myapp.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
Girdi
amazoncorretto:21-alpine
service.jar
9090
2
SPRING_PROFILES_ACTIVE=prod
JAVA_OPTS=-Xmx512m
Beklenen Çıktı
FROM amazoncorretto:21-alpine
WORKDIR /app
COPY service.jar app.jar
ENV SPRING_PROFILES_ACTIVE prod
ENV JAVA_OPTS -Xmx512m
EXPOSE 9090
ENTRYPOINT ["java", "-jar", "app.jar"]

💡 İpuçları

Main.java
✓ Çözüm yüklendi
puan

                    
Ln 1, Col 1 · JAVA · UTF-8
Wandbox