💻
Kolay
Dockerfile Builder
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:
- Base Image — Docker base image adı (örn:
eclipse-temurin:21-jre-alpine) - JAR Adı — Uygulamanın JAR dosyası adı (örn:
myapp.jar) - Port — Expose edilecek port numarası (örn:
8080) - Ortam Değişkeni Sayısı (N) — Kaç adet ENV satırı olacağı
- N adet
KEY=VALUEsatı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
WORKDIRher zaman/appolmalıdır.COPYkomutu verilen JAR adınıapp.jarolarak kopyalar.ENVsatırlarında format:ENV KEY VALUE(girdiKEY=VALUEşeklinde gelir,=işaretinden split edin, çıktıda=yerine boşluk kullanın).- Ortam değişkeni sayısı 0 ise
ENVsatırı hiç yazılmaz. ENTRYPOINTsatı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ı
StringBuilderkullanarak 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ı
İpucu 1: StringBuilder kullanarak Dockerfile içeriğini satır satır oluşturun.
İpucu 2: ENV satırında format: ENV KEY VALUE (= işareti yok).
İpucu 3: Ortam değişkeni yoksa (envCount=0) ENV satırı hiç yazılmaz.
İpucu 4: ENTRYPOINT satırında çift tırnak karakterlerini escape etmeyin, olduğu gibi yazdırın.
☕
Main.java
✓ Çözüm yüklendi
puan
Testleri çalıştırmak için kodunuzu gönderin
✅ Tüm testler geçti! Tebrikler!
Beklenen:
Sonuç:
Ln 1, Col 1
·
JAVA
·
UTF-8
Wandbox