FROM debian:oldstable-slim
# Non-interactive frontend for apt
ENV DEBIAN_FRONTEND=noninteractive
# Install dependencies required for building Arclight
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
openjdk-21-jdk-headless \
&& rm -rf /var/lib/apt/lists/*
# Set working directory to project root
WORKDIR /arclight
# Copy Gradle wrapper and sources
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source (mirrors CI build commands)
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Expose typical Minecraft port for server consumers
EXPOSE 25565
# Run the server jar produced by the Gradle build
CMD ["bash","-lc","java -Xmx2G -Xms1G -jar build/libs/*.jar nogui"]
# Ignore Git and Gradle metadata .git .gradle build out # IDEs .idea *.iml # Node node_modules # Logs *.log
- Exact error message and exit code - E: Unable to locate package openjdk-21-jdk-headless - Exit code: 100 - Failing command/step - [2/8] RUN apt-get update && apt-get install -y --no-install-recommends curl unzip git ca-certificates openjdk-21-jdk-headless && rm -rf /var/lib/apt/lists/* - Missing packages or files mentioned - openjdk-21-jdk-headless (not found in the Debian oldstable-slim apt repositories) - Version mismatch info - Base image: debian:oldstable-slim - Attempted to install OpenJDK 21 headless from the oldstable repository, which does not provide openjdk-21-jdk-headless, indicating a mismatch between the requested OpenJDK version and the base image’s Debian release.
Image debian:bullseye-slim openjdk-21-jdk-headless NOT found on Docker Hub.
FROM openjdk:21-jdk-slim AS builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /arclight
# Copy Gradle wrapper and project files
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY . .
RUN chmod +x gradlew
# Build the project from source
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Runtime image
FROM openjdk:21-jdk-slim
ENV DEBIAN_FRONTEND=noninteractive
# Create non-root user
RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight
WORKDIR /home/arclight
# Copy built artifacts from builder
COPY --from=builder /arclight/build/libs/ /home/arclight/build/libs/
RUN chown -R arclight:arclight /home/arclight/build/libs
USER arclight
EXPOSE 25565
CMD ["bash","-lc","java -Xmx2G -Xms1G -jar /home/arclight/build/libs/*.jar nogui"]
# Multi-stage build for Arclight # Stage 1: Build FROM openjdk:21-jdk-slim AS builder WORKDIR /arclight # Copy project and wrapper COPY gradlew ./gradlew COPY gradle ./gradle COPY . . RUN chmod +x gradlew # Build the project from source RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace # Stage 2: Runtime FROM openjdk:21-jdk-slim AS runtime ENV DEBIAN_FRONTEND=noninteractive WORKDIR /arclight # Create non-root user for runtime RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight # Copy built artifacts from builder COPY --from=builder /arclight/build/libs /arclight/build/libs RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs USER arclight EXPOSE 25565 # Startup script to pick the latest jar and run RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh' CMD ["/start.sh"]
Image openjdk:21-jdk-slim NOT found on Docker Hub.
Image temurin:21-jdk NOT found on Docker Hub.
Image eclipse-temurin:21-jre exists on Docker Hub.
# Multi-stage build for Arclight # Stage 1: Build FROM eclipse-temurin:21-jdk-jammy AS builder WORKDIR /arclight # Copy project and wrapper COPY gradlew ./gradlew COPY gradle ./gradle COPY . . RUN chmod +x gradlew # Build the project from source RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace # Stage 2: Runtime FROM eclipse-temurin:21-jre-jammy AS runtime ENV DEBIAN_FRONTEND=noninteractive WORKDIR /arclight # Create non-root user for runtime RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight # Copy built artifacts from builder COPY --from=builder /arclight/build/libs /arclight/build/libs RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs USER arclight EXPOSE 25565 # Startup script to pick the latest jar and run RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh' CMD ["/start.sh"]
- Failing step (Dockerfile instruction): - RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace - Exact error message and exit code: - BUILD FAILED in 1m 17s - ERROR: failed to build: failed to solve: process "/bin/sh -c ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace" did not complete successfully: exit code: 1 - Root cause (as reported in the log): - A problem occurred starting process 'command 'git'' - Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'git'' - Caused by: java.io.IOException: Cannot run program "git" (in directory "/arclight"): Exec failed, error: 2 (No such file or directory) - Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'git' - Missing packages or files mentioned: - git executable not found in the container (Git binary missing or not in PATH) - Version/mismatch information: - Gradle 8.13 is in use (Welcome to Gradle 8.13!) - Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
# Multi-stage build for Arclight # Stage 1: Build FROM eclipse-temurin:21-jdk-jammy AS builder WORKDIR /arclight # Install git for Gradle build USER root RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates curl unzip # Copy project and wrapper COPY gradlew ./gradlew COPY gradle ./gradle COPY . . RUN chmod +x gradlew # Build the project from source RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace # Stage 2: Runtime FROM eclipse-temurin:21-jre-jammy AS runtime ENV DEBIAN_FRONTEND=noninteractive WORKDIR /arclight # Create non-root user for runtime RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight # Copy built artifacts from builder COPY --from=builder /arclight/build/libs /arclight/build/libs RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs USER arclight EXPOSE 25565 # Startup script to pick the latest jar and run RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh' CMD ["/start.sh"]
Failing step - [builder 8/8] RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace Exact error message and exit code - fatal: not a git repository (or any of the parent directories): .git - A problem occurred evaluating root project 'arclight'. - Process 'command 'git'' finished with non-zero exit value 128 - BUILD FAILED in 1m 2s - The final Docker step exited with code: 1 - Git process exit code: 128 Missing packages or files mentioned - .git directory not present in the build context; Gradle attempted to run git during evaluation of build.gradle (line 18) but there is no git repository in /arclight. Version or mismatch information - Gradle 8.13 was downloaded and used. - Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
# Multi-stage build for Arclight
# Stage 1: Build
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /arclight
# Install git for Gradle build
RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates curl unzip \
&& rm -rf /var/lib/apt/lists/*
# Initialize a git repository in build context to satisfy Gradle's versioning if .git is missing
RUN git init \
&& git config user.email "ci@example.com" \
&& git config user.name "Docker Builder" \
&& git add -A \
&& git commit -m "Initial commit for docker build" || true
# Copy project wrapper and sources
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY . .
RUN chmod +x gradlew
# Build the project from source
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /arclight
# Create non-root user for runtime
RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight
# Copy built artifacts from builder
COPY --from=builder /arclight/build/libs /arclight/build/libs
RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs
USER arclight
EXPOSE 25565
# Startup script to pick the latest jar and run
RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh'
CMD ["/start.sh"]
Failing step - Builder step: builder 9/9 - Command: RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace - Docker error: ERROR: failed to build: failed to solve: process "/bin/sh -c ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace" did not complete successfully: exit code: 1 Exact error messages and exit codes - fatal: Needed a single revision - A problem occurred evaluating root project 'arclight'. - Process 'command 'git'' finished with non-zero exit value 128 - BUILD FAILED in 1m 7s - Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. - You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. - For more on this, please refer to https://docs.gradle.org/8.13/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. Missing packages or files mentioned - No explicit missing packages or files reported. The failure is due to a git command returning exit code 128 during Gradle evaluation. Version mismatch / environment notes - Gradle version: 8.13 (Welcome to Gradle 8.13!) - Deprecation note: Deprecated Gradle features were used; incompatible with Gradle 9.0 (potential future mismatch).
# Multi-stage build for Arclight
# Stage 1: Build
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /arclight
# Install essential tools (git can be used by plugin in Gradle, but we'll avoid relying on it at runtime)
RUN apt-get update \
&& apt-get install -y --no-install-recommends git curl unzip ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Copy project files (wrapper and sources)
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY . .
RUN chmod +x gradlew
# Build the project from source (avoid tasks that require network uploads)
RUN ./gradlew clean build -x test --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /arclight
# Create non-root user for runtime
RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight
# Copy built artifacts from builder
COPY --from=builder /arclight/build/libs /arclight/build/libs
RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs
USER arclight
EXPOSE 25565
# Startup script to pick the latest jar and run
RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh'
CMD ["/start.sh"]
Summary of Docker build error Failing step - [builder 8/8] RUN ./gradlew clean build -x test --no-daemon --stacktrace Exact error messages and exit codes - fatal: not a git repository (or any of the parent directories): .git - A problem occurred evaluating root project 'arclight'. - Process 'command 'git'' finished with non-zero exit value 128 - org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'arclight'. - BUILD FAILED in 1m 16s - Docker concludes: ERROR: failed to build: failed to solve: process "/bin/sh -c ./gradlew clean build -x test --no-daemon --stacktrace" did not complete successfully: exit code: 1 - Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. Missing packages/files mentioned - The error indicates the repository is not a git repository: .git directory is missing (fatal: not a git repository ... .git). The Gradle script attempted to run a git command as part of evaluating the build, which failed due to the absence of a .git folder in the build context. Version/mismatch information - Gradle version: 8.13 (Welcome to Gradle 8.13!) - Warning: Deprecated Gradle features were used, making it incompatible with Gradle 9.0. This suggests potential future incompatibilities if upgrading Gradle.
# Multi-stage build for Arclight
# Stage 1: Build
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /arclight
# Install essential tools (git can be used by plugin in Gradle, but we'll avoid relying on it at runtime)
RUN apt-get update \
&& apt-get install -y --no-install-recommends git curl unzip ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Create a minimal dummy .git to satisfy Gradle's git usage when a .git directory isn't available in the tarball
RUN mkdir -p .git/refs/heads \
&& printf "ref: refs/heads/main" > .git/HEAD \
&& printf "0000000000000000000000000000000000000000" > .git/refs/heads/main
# Copy project files (wrapper and sources)
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY . .
RUN chmod +x gradlew
# Build the project from source (avoid tasks that require network uploads)
RUN ./gradlew clean build -x test --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /arclight
# Create non-root user for runtime
RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight
# Copy built artifacts from builder
COPY --from=builder /arclight/build/libs /arclight/build/libs
RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs
USER arclight
EXPOSE 25565
# Startup script to pick the latest jar and run
RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh'
CMD ["/start.sh"]
Summary of Docker build error - Failing command/step: - RUN ./gradlew clean build -x test --no-daemon --stacktrace (builder 9/9) - Exit code: - exit code: 1 - Exact error messages to preserve: - fatal: not a git repository (or any of the parent directories): .git - A problem occurred evaluating root project 'arclight'. - Process 'command 'git'' finished with non-zero exit value 128 - BUILD FAILED in 1m 24s - Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. - You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. - For more on this, please refer to https://docs.gradle.org/8.13/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. - Missing packages or files mentioned: - The log shows a git command failing due to not being inside a Git repository; the underlying issue is the absence of a .git directory in the build context (fatal: ... .git). - Version mismatch / environment details: - Gradle version: 8.13 (Gradle 8.13 is downloaded as part of the build) - Noted deprecation issue: "Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0." - Base images involved: Eclipse Temurin 21 JRE/JDK (as seen in prior FROM steps), but the critical failure happens during Gradle evaluation.
# Multi-stage build for Arclight
# Stage 1: Build
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /arclight
# Install essential tools for build
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git \
curl \
unzip \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Copy project files (wrapper and sources)
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY . .
RUN chmod +x gradlew
# Ensure we have a git repository for Gradle's evaluation if the host tarball doesn't include .git
RUN if [ ! -d .git ]; then git init && git add -A && git commit -m "Docker build commit"; else echo ".git present"; fi
# Build the project from source
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /arclight
# Create non-root user for runtime
RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight
# Copy built artifacts from builder
COPY --from=builder /arclight/build/libs /arclight/build/libs
RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs
USER arclight
EXPOSE 25565
# Startup script to pick the latest jar and run
RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nif [ -z "$JAR" ]; then echo "No jar found"; exit 1; fi\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh'
CMD ["/start.sh"]
Error summary:
- Exact error message and exit code:
- fatal: unable to auto-detect email address (got 'root@buildkitsandbox.(none)')
- Exit code: 128
- Overall build error: failed to build: failed to solve: process "/bin/sh -c if [ ! -d .git ]; then git init && git add -A && git commit -m "Docker build commit"; else echo ".git present"; fi" did not complete successfully: exit code: 128
- Failing command/step:
- [builder 8/9] RUN if [ ! -d .git ]; then git init && git add -A && git commit -m "Docker build commit"; else echo ".git present"; fi
- Missing packages or files mentioned:
- No specific missing packages/files cited as missing. The apt-get install step completed, installing git, curl, unzip, ca-certificates, etc. The failure is due to Git not having user identity configured, not a missing package.
- Version mismatch info:
- Base images used:
- runtime: eclipse-temurin:21-jre-jammy@sha256:9124935fec241982824f1992fefab73f14701c3cc54a3e18cdb4bf6ce11d9a12
- builder: eclipse-temurin:21-jdk-jammy@sha256:db76cc1ec33597273b26359c23ff1fc8d83a570ead897ce694e9d314e0014032
- No version mismatch error reported; digests indicate specific image versions.# Multi-stage build for Arclight
# Stage 1: Build
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /arclight
# Install essential tools for build
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git \
curl \
unzip \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Create a minimal dummy .git to satisfy Gradle's git usage when a .git directory isn't available in the tarball
RUN mkdir -p .git/refs/heads \
&& printf "ref: refs/heads/main" > .git/HEAD \
&& printf "0000000000000000000000000000000000000000" > .git/refs/heads/main
# Copy project files (wrapper and sources)
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY . .
RUN chmod +x gradlew
# Ensure we have a git repository for Gradle's evaluation if the host tarball doesn't include .git
RUN if [ ! -d .git ]; then git init && git config user.email "ci@example.com" && git config user.name "Docker Builder" && git add -A && git commit -m "Docker build commit"; else echo ".git present"; fi
# Build the project from source
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /arclight
# Create non-root user for runtime
RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight
# Copy built artifacts from builder
COPY --from=builder /arclight/build/libs /arclight/build/libs
RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs
USER arclight
EXPOSE 25565
# Startup script to pick the latest jar and run
RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nif [ -z "$JAR" ]; then echo "No jar found"; exit 1; fi\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh'
CMD ["/start.sh"]
Failing step - Builder step: [builder 10/10] RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace Exact error message and exit code - fatal: not a git repository (or any of the parent directories): .git - Process 'command 'git'' finished with non-zero exit value 128 - Build file '/arclight/build.gradle' line: 18 - A problem occurred evaluating root project 'arclight'. - BUILD FAILED in 1m 8s - ERROR: failed to solve: process "/bin/sh -c ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace" did not complete successfully: exit code: 1 Missing packages or files mentioned - Not a valid git repository in the build context (fatal: not a git repository ...). The Dockerfile previously tried to create a fake .git structure, but Gradle still treats it as not a repository, indicating a missing real .git repository for the Gradle git invocation. Version mismatch / notes - Gradle 8.13 is in use (Welcome to Gradle 8.13!). - Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0 (suggests potential future incompatibilities).
# Multi-stage build for Arclight
# Stage 1: Build
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /arclight
# Install essential tools for build
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git \
curl \
unzip \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Create a minimal dummy .git to satisfy Gradle's git usage when a .git directory isn't available in the tarball
RUN mkdir -p .git/refs/heads \
&& printf "ref: refs/heads/main" > .git/HEAD \
&& printf "0000000000000000000000000000000000000000" > .git/refs/heads/main
# Copy project files (wrapper and sources)
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY . .
RUN chmod +x gradlew
# Ensure we have a git repository for Gradle's evaluation if the host tarball doesn't include .git
RUN printf "Docker build commit" > DOCKER_BUILD.txt \
&& if [ ! -d .git ]; then git init && git config user.email "ci@example.com" && git config user.name "Docker Builder" && git add DOCKER_BUILD.txt && git commit -m "Docker build commit"; else git add DOCKER_BUILD.txt && git commit -m "Docker build commit" || true; fi
# Build the project from source
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /arclight
# Create non-root user for runtime
RUN groupadd -r arclight && useradd -r -g arclight -d /home/arclight arclight
# Copy built artifacts from builder
COPY --from=builder /arclight/build/libs /arclight/build/libs
RUN mkdir -p /home/arclight && chown -R arclight:arclight /home/arclight /arclight/build/libs
USER arclight
EXPOSE 25565
# Startup script to pick the latest jar and run
RUN bash -lc 'cat > /start.sh << "EOF"\n#!/bin/sh\nset -e\nJAR=$(ls /arclight/build/libs/*.jar | head -n 1)\nif [ -z "$JAR" ]; then echo "No jar found"; exit 1; fi\nexec java -Xmx2G -Xms1G -jar "$JAR" nogui\nEOF\nchmod +x /start.sh'
CMD ["/start.sh"]
Summary (under 1500 chars):
- Exact error messages and exit code:
- Process 'command 'git'' finished with non-zero exit value 128
- fatal: not a git repository (or any of the parent directories): .git
- Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
- Failing command/step:
- RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace (builder 10/10; Dockerfile:32)
- Missing packages or files mentioned:
- No explicit missing package/files, but the git-related errors indicate the build context lacks a .git directory:
- fatal: not a git repository (or any of the parent directories): .git
- Version mismatch info:
- Gradle version in use: Gradle 8.13 (gradle-8.13-all.zip is being downloaded)
- Warning: Deprecated Gradle features are used, making the build incompatible with Gradle 9.0.# syntax=docker/dockerfile:1
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /workspace
# Install required build tools
RUN apt-get update && \
apt-get install -y --no-install-recommends curl unzip git ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Copy Gradle wrapper and project files
COPY gradlew .
COPY gradle ./gradle
COPY settings.gradle .
COPY build.gradle .
COPY arclight-common ./arclight-common
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build from source
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Runtime stage
FROM eclipse-temurin:21-jre-jammy
WORKDIR /app
# Copy built artifacts from builder
COPY --from=builder /workspace/arclight-common/build/libs /app/libs
# Startup script to run the first jar found in /app/libs
RUN set -e; \
mkdir -p /start.sh.d; \
JAR_FOUND=$(ls /app/libs/*.jar 2>/dev/null | head -n 1); \
if [ -z "$JAR_FOUND" ]; then echo "No jar found in /app/libs"; exit 1; fi; \
printf '#!/bin/sh\nset -e\nJAR=\"%s\"\nif [ -z \"$JAR\" ]; then echo No jar found; exit 1; fi\nexec java -jar \"$JAR\" nogui\n' "$JAR_FOUND" > /start.sh; \
chmod +x /start.sh
CMD ["/start.sh"]
Summary (under 1500 chars):
- Exact error message and exit code
- Error: Plugin [id: 'dev.architectury.loom', apply: false] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Included Builds (No included builds contain this plugin)
- Plugin Repositories (plugin dependency must include a version number for this source)
- Exception: org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'dev.architectury.loom', apply: false] was not found in any of the following sources:
- BUILD FAILED in 26s
- The Docker run failure line: ERROR: process "/bin/sh -c ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace" did not complete successfully: exit code: 1
- Failing command/step
- Dockerfile step: RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
- Dockerfile:22
- Missing packages or files mentioned
- The failure is due to a missing Gradle plugin (dev.architectury.loom) with no version specified in a plugin repository; no filesystem/package-missing message. The log notes the plugin could not be found in Gradle plugin sources and that a version must be specified for plugin repositories.
- Version mismatch / related info
- Gradle version shown: Gradle 8.13 (Welcome to Gradle 8.13!)
- Deprecation warning: Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.Architecture (English) – Study at IAU – Istanbul Aydin University https://study.aydin.edu.tr/architecture-english/ We invite you to explore of how the profession of architecture plays a vital role in shaping society in the present day. İTÜ - Faculty of Architecture https://arch.itu.edu.tr/ Geleceğin mimarlarını yetiştiren İTÜ Taşkışla Kampüsü, İstanbul Teknik Üniversitesi Mimarlık Fakültesi ve alt birimlerine 1928'den beri ev … Architecture - İstanbul https://mimarlik.istanbul.edu.tr/en/content/departments/architecture Architectural undergraduate program started the education by taking the first students in 2019-2020 Fall semester. Department of Architecture | Department of Architecture http://mim.iku.edu.tr/en Within the scope of the preparatory studies carried out for the course “ARC0006 Architectural Design 6,” which will be offered in the Spring … Department of Architecture - İstanbul Arel University https://arel.edu.tr/en/department-of-architecture/ Its roots appear in professions such as architecture, art, technology, and science, which are among the professions that continue to …
plugins {
id 'architectury-plugin'
}
architectury {
common(rootProject.ext.supportedPlatforms)
}
loom {
accessWidenerPath = file('src/main/resources/arclight.accesswidener')
}
dependencies {
modImplementation libs.fabric.loader
compileOnly rootProject.ext.generatedSpigot
implementation libs.izzel.tools
implementation libs.arclight.api
implementation libs.mixin.tools
annotationProcessor(libs.mixin.tools) { transitive = false }
// spigot
implementation libs.spigot.api
implementation libs.jline
implementation libs.terminalconsoleappender
implementation libs.specialsource
implementation libs.log4j.jul
implementation libs.bungeecord.chat
implementation libs.mysql.connectorj
implementation libs.snakeyaml
implementation project(':i18n-config')
}
compileJava {
options.compilerArgs << '-XDignore.symbol.file' << '-XDenableSunApiLintControl'
options.encoding = 'UTF-8'
}
pluginManagement {
repositories {
maven { url 'https://maven.fabricmc.net/' }
maven { url 'https://maven.architectury.dev/' }
maven { url 'https://maven.minecraftforge.net/' }
gradlePluginPortal()
}
}
rootProject.name = 'arclight'
include 'installer'
include 'i18n-config'
include 'arclight-common'
include 'arclight-forge'
include 'arclight-neoforge'
include 'arclight-fabric'
include 'bootstrap'
gradle/wrapper/gradle-wrapper.properties
#Sun Feb 09 15:27:43 CST 2020 distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME
- Plugins (versions):
- architectury-plugin 3.4-SNAPSHOT
- dev.architectury.loom (version from gradle/libs.versions.toml)
- com.gradleup.shadow 8.3.+
- Top-level project
- group: io.izzel.arclight
- version: 1.0.2-SNAPSHOT
- versionName: feudal-kings
- gitHash: computed via git rev-parse --short HEAD
- supportedPlatforms: forge, neoforge, fabric
- generatedSpigot: io.izzel.arclight.generated:spigot:${libs.versions.minecraft.get()}:deobf
- Java toolchain: languageVersion 21
- Repositories (sample):
- https://repo.spongepowered.org/maven
- https://oss.sonatype.org/content/repositories/snapshots/
- https://hub.spigotmc.org/nexus/content/repositories/snapshots/
- https://maven.neoforged.net/releases
- https://files.minecraftforge.net/maven/
- https://maven.izzel.io/releases
- mavenCentral(), mavenLocal()
- Dependencies (top level): compileOnly libs.lombok, annotationProcessor libs.lombok, compileOnly libs.jetbrains.annotations
- Tasks:
- cleanBuild: deletes build/libs directory
- Git helpers
- getGitHash() runs: git rev-parse --short HEAD
- gitBranch() runs: git rev-parse --abbrev-ref HEAD
- Subprojects (rootProject.ext.subProjects)
- Plugins applied: architectury-plugin, dev.architectury.loom, ArclightGradlePlugin
- arclight: mcVersion = libs.versions.minecraft.get(); bukkitVersion = libs.versions.bukkit.api.get(); spigotReversion = libs.versions.spigot.reversion.get()
- accessTransformer: rootProject.ext.commonProject.file('bukkit.at')
- extraMapping: rootProject.ext.commonProject.file('extra_mapping.tsrg')
- Configurations: common (canBeResolved true, canBeConsumed false); shadowBundle (canBeResolved true, canBeConsumed false)
- Dependencies: minecraft libs.minecraft; mappings loom.layered() with officialMojangMappings() and parchment artifact
- Java: withSourcesJar()
- Platform projects (rootProject.ext.platformProjects)
- Plugins: dev.architectury.loom, com.gradleup.shadow
- loom.accessWidenerPath = root project's commonProject.loom.accessWidenerPath
- jar.manifest attributes include:
- MixinConnector: io.izzel.arclight.common.mod.ArclightConnector
- Implementation-Title: Arclight
- Implementation-Version: ${p.name}-${libs.versions.minecraft.get()}-${project.version}+$gitHash
- Implementation-Vendor: Arclight Team
- Implementation-Timestamp: current timestamp (yyyy-MM-dd HH:mm:ss)
- manifest for platformProjects includes Implementation-Version with gitHash
- manifest for components.java: skip shadowRuntimeElements variants
- Jar
- jar.enabled = false
- collect task
- Type: Copy
- destinationDir: build/libs
- from outputs:
- project(':bootstrap').tasks.forgeJar.outputs
- project(':bootstrap').tasks.neoforgeJar.outputs
- project(':bootstrap').tasks.fabricJar.outputs
- UploadFiles task
- Type: UploadFilesTask
- mcVersion: libs.versions.minecraft
- version: "${project.version}-${project.ext.gitHash}"
- snapshot: true if project.version ends with -SNAPSHOT
- gitHash: project.ext.gitHash
- branch: gitBranch()
- inputs: tasks.collect.outputs.files
- dependsOn: tasks.collect
- Additional: generatedSpigot uses mc version variable; collector pulls outputs from bootstrap jars; bukkit.at and extra_mapping.tsrg paths are used in arclight config.No files found matching pattern.
No files found matching pattern.
gradle/libs.versions.toml
Summary (under 1500 chars) Versions - plugins: architectury-loom = 1.9-SNAPSHOT - common: lombok = 1.18.38; jetbrains-annotations = 23.0.0 - libs: asm = 9.7.1; commons-io = 2.19.0; gson = 2.10.1; hocon = 3.6.1 - lorenz stack: lorenz = 0.5.8; lorenz-io-proguard = 0.5.8; fabric-lorenz-tiny = 4.0.2 - cadix: cadixdev-at = 0.1.0-rc1; cadixdev-mercury = 0.1.4.17 - special-source = 1.11.5 - mixin = 0.8.5 - arclight: arclight-api = 1.7.3; izzel-tools = 1.3.0; mixin-tools = 1.2.6 - minecraft ecosystem: minecraft = 1.21.1; parchment = 2024.11.17; forge = 52.1.5; full-forge = 1.21.1-52.1.5; fabric-loader = 0.18.2; fabric-api = 0.116.7+1.21.1; neoforge = 21.1.216; fabric-permissions-api = 0.3.1 - spigot deps: spigot-reversion = 4344; bukkit-api = v1_21_R1; spigot-api = 1.21.1-R0.1-SNAPSHOT; bungeecord-chat-api = 1.20-R0.2; jline = 2.12.1; terminal-console-appender = 1.2.0; log4j = 2.22.1; snakeyaml = 2.0; mysql-connector-j = 8.4.0 Libraries mappings (libraries section) - lombok -> org.projectlombok:lombok:1.18.38 - jetbrains-annotations -> org.jetbrains:annotations:23.0.0 - loom (buildSrc) -> dev.architectury:architectury-loom:1.9-SNAPSHOT - asm-commons -> org.ow2.asm:asm-commons:9.7.1 - asm-tree -> org.ow2.asm:asm-tree:9.7.1 - asm-util -> org.ow2.asm:asm-util:9.7.1 - commons-io -> commons-io:commons-io:2.19.0 - lorenz-core -> org.cadixdev:lorenz:0.5.8 - lorenz-proguard -> org.cadixdev:lorenz-io-proguard:0.5.8 - lorenz-tiny -> net.fabricmc:lorenz-tiny:4.0.2 - at -> org.cadixdev:at:0.1.0-rc1 - mercury -> dev.architectury:mercury:0.1.4.17 - specialsource -> net.md-5:SpecialSource:1.11.5 - minecraft -> com.mojang:minecraft:1.21.1 - spigot-api -> org.spigotmc:spigot-api:1.21.1-R0.1-SNAPSHOT - bungeecord-chat -> net.md-5:bungeecord-chat:1.20-R0.2 - snakeyaml -> org.yaml:snakeyaml:2.0 - mysql-connector-j -> com.mysql:mysql-connector-j:8.4.0 - jline -> jline:jline:2.12.1 - terminalconsoleappender -> net.minecrell:terminalconsoleappender:1.2.0 - log4j-api -> org.apache.logging.log4j:log4j-api:2.22.1 - log4j-core -> org.apache.logging.log4j:log4j-core:2.22.1 - log4j-jul -> org.apache.logging.log4j:log4j-jul:2.22.1 - arclight-api -> io.izzel.arclight:arclight-api:1.7.3 - izzel-tools -> io.izzel:tools:1.3.0 - mixin-tools -> io.izzel.arclight:mixin-tools:1.2.6 - forge -> net.minecraftforge:forge (version.ref full-forge; full-forge = 1.21.1-52.1.5) - fabric-loader -> net.fabricmc:fabric-loader:0.18.2 - fabric-api -> net.fabricmc.fabric-api:fabric-api:0.116.7+1.21.1 - fabric-permissions-api -> me.lucko:fabric-permissions-api:0.3.1 - neoforge -> net.neoforged:neoforge:21.1.216 - gson -> com.google.code.gson:gson:2.10.1 - configurate-hocon -> org.spongepowered:configurate-hocon:3.6.1 - sponge-mixin -> org.spongepowered:mixin:0.8.5 Bundles - asm = asm-commons, asm-tree, asm-util - lorenz = lorenz-core, lorenz-proguard, lorenz-tiny - log4j = log4j-api, log4j-core, log4j-jul - spigot-shade = spigot-api, bungeecord-chat - spigot-runtime = spigot-api, snakeyaml, mysql-connectorj, bungeecord-chat
Dev-C++ download | SourceForge.net https://sourceforge.net/projects/orwelldevcpp/ 29 Kas 2016 · Dev-C++ is the best software for every user, and friendly user great tool. 1 user found this review helpful. Dev-C++ download | SourceForge.net https://sourceforge.net/projects/dev-cpp/ 11 May 2022 · Download Dev-C++ for free. Open Source C & C++ IDE for Windows. Dev-C++ is a full-featured Integrated Development Environment (IDE) for Win32. It uses GCC, Mingw or Cygwin as … Dev-C++ - Browse /Setup Releases at SourceForge.net https://sourceforge.net/projects/orwelldevcpp/files/Setup+Releases/ 15 Eki 2011 · - Setup releases contains Dev-C++ in setup form. - Portable releases contains Dev-C++ in zipped form. Use devcppPortable.exe to store configuration files inside the program folder. - … Dev-C++ for Windows 10/8/7 download | SourceForge.net https://sourceforge.net/projects/embarcadero-devcpp/ 19 May 2021 · Download Dev-C++ for Windows 10/8/7 for free. A fast, portable, simple, and free C/C++ IDE. Coding Boot Camp Learning to program? Check out the free boot camp from Embarcadero which … Dev-C++ - Browse Files at SourceForge.net https://sourceforge.net/projects/orwelldevcpp/files/ - Setup releases contains Dev-C++ in setup form. - Portable releases contains Dev-C++ in zipped form. Use devcppPortable.exe to store configuration files inside the program folder. - Compilers contain
pluginManagement {
repositories {
maven { url 'https://maven.fabricmc.net/' }
maven { url 'https://maven.architectury.dev/' }
maven { url 'https://maven.minecraftforge.net/' }
gradlePluginPortal()
}
plugins {
id 'dev.architectury.loom' version '1.9-SNAPSHOT'
}
}
rootProject.name = 'arclight'
include 'installer'
include 'i18n-config'
include 'arclight-common'
include 'arclight-forge'
include 'arclight-neoforge'
include 'arclight-fabric'
include 'bootstrap'
# syntax=docker/dockerfile:1
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /workspace
# Install required build tools
RUN apt-get update && \
apt-get install -y --no-install-recommends curl unzip git ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Copy entire repository
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build from source
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Runtime stage
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to run the first jar found in /app/libs
RUN set -e; \
JAR_FOUND=$(ls /app/libs/*.jar 2>/dev/null | head -n 1); \
if [ -z "$JAR_FOUND" ]; then echo "No jar found in /app/libs"; exit 1; fi; \
printf '#!/bin/sh\nset -e\nJAR="%s"\nif [ -z "$JAR" ]; then echo No jar found; exit 1; fi\nexec java -jar "$JAR" nogui\n' "$JAR_FOUND" > /start.sh; \
chmod +x /start.sh
CMD ["/start.sh"]
- Failing command/step: - Dockerfile step: RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace - Exact error messages and exit code: - ERROR: process "/bin/sh -c ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace" did not complete successfully: exit code: 1 - fatal: not a git repository (or any of the parent directories): .git - Process 'command 'git'' finished with non-zero exit value 128 - Build file '/workspace/build.gradle' line: 18 - A problem occurred evaluating root project 'arclight'. - org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'arclight'. - Missing packages or files mentioned: - The log indicates Git attempted to run in a non-Git repository context (.git not found), causing the 128 exit. Specifically: "fatal: not a git repository (or any of the parent directories): .git" - Version mismatch / environment info: - Welcome to Gradle 8.13! - Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
# Ignore Git and Gradle metadata .git .gradle build out # IDEs .idea *.iml # Node node_modules # Logs *.log
# syntax=docker/dockerfile:1
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /workspace
# Install required build tools
RUN apt-get update && \
apt-get install -y --no-install-recommends curl unzip git ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Copy .git metadata is ignored by .dockerignore; but we may still need git to fetch dependencies if not present
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build from source. Use environment variable to allow Gradle to fetch dependencies without git metadata
ARG GRADLE_BUILD_SKIP_GIT=1
RUN if [ "$GRADLE_BUILD_SKIP_GIT" = "1" ]; then export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; fi; \
./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Runtime stage
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to run the first jar found in /app/libs
RUN set -e; \
JAR_FOUND=$(ls /app/libs/*.jar 2>/dev/null | head -n 1); \
if [ -z "$JAR_FOUND" ]; then echo "No jar found in /app/libs"; exit 1; fi; \
printf '#!/bin/sh\nset -e\nJAR="%s"\nif [ -z "$JAR" ]; then echo No jar found; exit 1; fi\nexec java -jar "$JAR" nogui\n' "$JAR_FOUND" > /start.sh; \
chmod +x /start.sh
CMD ["/start.sh"]
Actionable Docker Gradle build failure (concise) - Failing command/step - RUN if [ "$GRADLE_BUILD_SKIP_GIT" = "1" ]; then export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; fi; ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace - Exact error message and exit code to note - Docker layer exit: ERROR: process "/bin/sh -c if [ \"$GRADLE_BUILD_SKIP_GIT\" = \"1\" ]; then export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; fi; ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace" did not complete successfully: exit code: 1 - Gradle failure cause: A problem occurred evaluating root project 'arclight'. - Underlying git failure: Process 'command 'git'' finished with non-zero exit value 128 - Specific git-related message seen: fatal: not a git repository (or any of the parent directories): .git - Missing packages/files referenced - The log shows a missing Git repository context: fatal: not a git repository (or any of the parent directories): .git - This implies the build expects a .git directory in the workspace (git metadata) but it is not present. - Version/compatibility notes - Gradle version in use: Gradle 8.13 (Welcome to Gradle 8.13!) - Deprecation/compatibility: Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
#Sun Feb 09 15:27:43 CST 2020 distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME
gradlew
- Purpose: Unix/Linux shell startup script for Gradle Wrapper. Runs org.gradle.wrapper.GradleWrapperMain with project arguments.
- Key paths and names:
- APP_HOME: resolved from script location
- APP_NAME: "Gradle"
- APP_BASE_NAME: basename of the script
- CLASSPATH: $APP_HOME/gradle/wrapper/gradle-wrapper.jar
- JVM options:
- DEFAULT_JVM_OPTS: "-Xmx64m"
- Final invocation includes -Dorg.gradle.appname=$APP_BASE_NAME and the classpath
- JAVA command selection:
- If JAVA_HOME is set:
- Use JAVA_HOME/jre/sh/java if available; else JAVA_HOME/bin/java
- If JAVACMD is not executable: die with:
ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
- If JAVA_HOME is not set:
- Use "java" from PATH
- If no java command found: die with:
ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
- File descriptor adjustment:
- Attempts to raise max file descriptors on non-Cygwin, non-Darwin, non-nonstop systems; logs warnings if it cannot.
- macOS (Darwin) specifics:
- Adds GRADLE_OPTS to set dock name and icon: -Xdock:name=$APP_NAME and -Xdock:icon=$APP_HOME/media/gradle.icns
- Cygwin specifics:
- Converts paths to Windows format and back as needed
- Performs complex arg translation and reconstruction for the Java command
- Rebuilds the argument list via a pattern-based cygpath conversion
- Argument handling:
- save() escapes and formats arguments
- APP_ARGS contains the sanitized arguments
- Final parameter assembly via:
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
- Darwin Finder quirk fix:
- If on Darwin and HOME equals PWD, cd to script directory before exec
- Execution:
- exec "$JAVACMD" "$@"
- Important error/text references to preserve:
- ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
- ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.# syntax=docker/dockerfile:1
FROM eclipse-temurin:21-jdk-jammy AS builder
WORKDIR /workspace
# Install required build tools
RUN apt-get update && \
apt-get install -y --no-install-recommends curl unzip git ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Copy the entire repository (including .git for git-based versioning in Gradle)
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build from source
RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace
# Runtime stage
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to run the first jar found in /app/libs
RUN set -e; \
JAR_FOUND=$(ls /app/libs/*.jar 2>/dev/null | head -n 1); \
if [ -z "$JAR_FOUND" ]; then echo "No jar found in /app/libs"; exit 1; fi; \
printf '#!/bin/sh\nset -e\nJAR="%s"\nif [ -z "$JAR" ]; then echo No jar found; exit 1; fi\nexec java -jar "$JAR" nogui\n' "$JAR_FOUND" > /start.sh; \
chmod +x /start.sh
CMD ["/start.sh"]
- Failing step (Dockerfile): RUN ./gradlew cleanBuild build collect uploadFiles --no-daemon --stacktrace (Dockerfile: line 18)
- Exit status: BUILD FAILED in 1m 13s; exit code: 1
- Exact error messages to preserve:
- A problem occurred evaluating root project 'arclight'.
- > Process 'command 'git'' finished with non-zero exit value 128
- Caused by: org.gradle.process.internal.ExecException: Process 'command 'git'' finished with non-zero exit value 128
- fatal: not a git repository (or any of the parent directories): .git
- Build file '/workspace/build.gradle' line: 18
- Failing command/step context: Gradle build invoked during the image build, failing while evaluating the root Gradle project ('arclight') due to a git command error.
- Missing packages or files mentioned:
- The log shows git is installed (apt-get included git), but the error indicates the workspace is not a Git repository:
- fatal: not a git repository (or any of the parent directories): .git
- Version/mismatch information:
- Gradle version: 8.13 (Welcome to Gradle 8.13!)
- Java/SDK base: eclipse-temurin:21-jdk-jammy (builder) / eclipse-temurin:21-jre-jammy (runtime); uses JDK 21
- Minor note: Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
- Actionable takeaway:
- The build expects a Git checkout in /workspace (with a .git dir) during Gradle evaluation. Ensure the build context provides a Git repository (or adjust Gradle/build scripts to avoid requiring git metadata).# Stage 1: Builder - compile from source using Gradle wrapper
FROM debian:oldstable-slim AS builder
# Install required tools and JDK 21 (headless) for Gradle build
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
openjdk-21-jdk-headless \
&& rm -rf /var/lib/apt/lists/*
# Build workspace
WORKDIR /workspace
# Copy Gradle wrapper and project files first to leverage layer caching
COPY gradlew .
COPY gradle ./gradle
COPY settings.gradle settings.gradle || true
COPY build.gradle build.gradle || true
COPY arclight-common arclight-common
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Ensure runtime has CA certificates (for Gradle wrapper fetches if needed)
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Startup script to pick the jar and run it
RUN printf '%s
' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
CMD ["/app/start.sh"]
# General ignores .git .gradle build out .DS_Store *.iml .kotlin_tmp """
Concerns: COPY statements using '|| true' (e.g., 'COPY settings.gradle settings.gradle || true' and 'COPY build.gradle build.gradle || true') are invalid in Dockerfiles and will cause build failures. Dockerfile COPY does not run in a shell where '|| true' would be evaluated; these lines should be reworked or removed., The Dockerfile relies on potentially unavailable OpenJDK 21 in Debian 'oldstable-slim' for the builder stage. Ensure OpenJDK 21 (headless) is actually available in that base or switch to a base image that reliably provides Java 21., No explicit HEALTHCHECK or PORT exposure. While not strictly required for a smoke test, adding a healthcheck and documenting the port would improve operability in production environments.
# Stage 1: Builder - compile from source using Gradle wrapper
FROM openjdk:21-jdk-slim AS builder
# Install required tools for build
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy project files
COPY gradlew .
COPY gradle ./gradle
COPY arclight-common arclight-common
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
COPY --from=builder /workspace/gradlew /app/gradlew
COPY --from=builder /workspace/gradle /app/gradle
# Setup runtime environment
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
CMD ["/app/start.sh"]
# Stage 1: Builder - compile from source using Gradle wrapper
FROM debian:oldstable-slim AS builder
# Install required tools and JDK 21 (headless) for Gradle build
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
openjdk-21-jdk-headless \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy Gradle wrapper and project files first to leverage layer caching
COPY gradlew .
COPY gradle ./gradle
COPY arclight-common arclight-common
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Ensure runtime has CA certificates
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
CMD ["/app/start.sh"]
- VerifyBuild status: build_failed
- Concerns
- Startup uses nogui argument; ensure the built jar accepts nogui; if not, container may fail to start.
- Base image for builder is Debian oldstable-slim which is outdated; update to a current Debian tag.
- Running the app at startup is not tested; smoke tests do not verify actual service behavior beyond jar discovery and Java availability.
- Build error
- Exact error: E: Unable to locate package openjdk-21-jdk-headless
- Build exit code: 100
- Full failure: "ERROR: failed to build: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends curl unzip git ca-certificates openjdk-21-jdk-headless && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100"
- Failing command/step
- [builder 2/9] RUN apt-get update && apt-get install -y --no-install-recommends curl unzip git ca-certificates openjdk-21-jdk-headless && rm -rf /var/lib/apt/lists/*
- Dockerfile snippet (exact lines)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
openjdk-21-jdk-headless \
&& rm -rf /var/lib/apt/lists/*
- Missing packages or files mentioned
- openjdk-21-jdk-headless is not found/unlocatable in the Debian oldstable-slim repositories used by the builder stage.
- Version mismatch info
- Builder base image uses Debian oldstable-slim.
- Runtime base image uses eclipse-temurin:21-jre-jammy (Temurin 21 on jammy).
- The package openjdk-21-jdk-headless is not available in Debian oldstable repositories, causing a mismatch. Possible fixes:
- Use a newer Debian base (e.g., bookworm) that provides OpenJDK 21 in apt.
- Install a supported JDK version (e.g., openjdk-17-jdk-headless) compatible with oldstable.
- Install OpenJDK 21 via an alternative method (Adoptium/Temurin tarball) rather than apt.# Stage 1: Builder - compile from source using Gradle wrapper
FROM eclipse-temurin:21-jdk AS builder
# Install required tools for build (JDK is provided by the base image)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy project files (order to leverage build cache)
COPY gradlew .
COPY gradle ./gradle
COPY arclight-common arclight-common
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
CMD ["/app/start.sh"]
- Failing step/command: - [builder 9/9] RUN ./gradlew clean build --no-daemon --stacktrace - Exact error message and exit code: - Exact Gradle error: Process 'command 'git'' finished with non-zero exit value 128 - Exit code: 128 - Related failure context: A problem occurred evaluating root project 'arclight'. - Missing packages or files mentioned: - fatal: not a git repository (or any of the parent directories): .git - This indicates the Gradle evaluation attempted to run git in a directory without a .git repository. - Version mismatch / environment details: - Gradle version: Gradle 8.13 (Welcome to Gradle 8.13!) - Java/SDK base images: eclipse-temurin:21-jdk and eclipse-temurin:21-jre-jammy - Notable note: Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
# Stage 1: Builder - compile from source using Gradle wrapper
FROM eclipse-temurin:21-jdk AS builder
# Install required tools for build (JDK is provided by the base image)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Initialize a git repository to satisfy Gradle scripts that expect a git repo
RUN git init \
&& git config user.name "builder" \
&& git config user.email "builder@example.com"
# Copy project files (order to leverage build cache)
COPY gradlew .
COPY gradle ./gradle
COPY arclight-common arclight-common
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
CMD ["/app/start.sh"]
- Failing step (Docker build): [builder 10/10] RUN ./gradlew clean build --no-daemon --stacktrace - Exact error messages and exit code to preserve: - fatal: Needed a single revision - A problem occurred evaluating root project 'arclight'. - Process 'command 'git'' finished with non-zero exit value 128 - Build file '/workspace/build.gradle' line: 18 - Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. - 3 actionable tasks: 3 executed - BUILD FAILED in 1m 5s - ERROR: process "/bin/sh -c ./gradlew clean build --no-daemon --stacktrace" did not complete successfully: exit code: 1 - Missing packages/files mentioned: - apt-get step (curl, unzip, git, ca-certificates) was cached; no missing packages/files appear in the log. - Version mismatch info: - Gradle 8.13 is used (Welcome to Gradle 8.13!) with JDK 21 in the base image (eclipse-temurin:21-jdk) and a 21-jre-jammy runtime image. - Warning: Deprecated Gradle features were used, making it incompatible with Gradle 9.0 (implies potential future mismatch if upgrading Gradle).
Actionable summary of the Gradle build script
- Project basics
- Root group: io.izzel.arclight; root version: 1.0.2-SNAPSHOT; versionName: feudal-kings.
- Java toolchain: languageVersion 21.
- Libraries: generatedSpigot = "io.izzel.arclight.generated:spigot:${libs.versions.minecraft.get()}:deobf".
- gitHash is computed via getGitHash(): git rev-parse --short HEAD; stored in ext.gitHash.
- gitBranch() uses: git rev-parse --abbrev-ref HEAD.
- Subprojects: platformProjects = arclight-forge, arclight-fabric, arclight-neoforge; common project = arclight-common; subProjects = platformProjects + common.
- Plugins
- architectury-plugin 3.4-SNAPSHOT (not applied by default)
- dev.architectury.loom (not applied by default)
- com.gradleup.shadow 8.3.+ (not applied by default)
- Per-subproject: apply architectury-plugin, loom, and ArclightGradlePlugin
- Repositories (global)
- https://repo.spongepowered.org/maven
- https://oss.sonatype.org/content/repositories/snapshots/
- https://hub.spigotmc.org/nexus/content/repositories/snapshots/
- https://maven.neoforged.net/releases
- https://files.minecraftforge.net/maven/
- https://maven.izzel.io/releases
- mavenCentral()
- mavenLocal()
- Global dependencies (allprojects)
- compileOnly libs.lombok
- annotationProcessor libs.lombok
- compileOnly libs.jetbrains.annotations
- cleanBuild task: deletes build/libs
- Subproject configuration (each p in rootProject.ext.subProjects)
- Plugins: architectury-plugin, dev.architectury.loom, ArclightGradlePlugin
- architectury.minecraft = libs.versions.minecraft.get()
- loom: silentMojangMappingsLicense()
- arclight: mcVersion = libs.versions.minecraft.get(); bukkitVersion = libs.versions.bukkit.api.get(); spigotReversion = libs.versions.spigot.reversion.get(); accessTransformer = root/ext/commonProject.file('bukkit.at'); extraMapping = root/ext/commonProject.file('extra_mapping.tsrg')
- configurations: common (canBeResolved true, canBeConsumed false); compileClasspath, runtimeClasspath, developmentForge, developmentFabric, developmentNeoForge extendFrom common; shadowBundle (canBeResolved true, canBeConsumed false)
- dependencies: minecraft libs.minecraft; mappings loom.layered() with officialMojangMappings() and parchment("org.parchmentmc.data:parchment-${libs.versions.minecraft.get()}:${libs.versions.parchment.get()}@zip")
- java: withSourcesJar()
- Platform project configuration (each p in rootProject.ext.platformProjects)
- Plugins: dev.architectury.loom, com.gradleup.shadow
- loom: accessWidenerPath = rootProject.ext.commonProject.loom.accessWidenerPath
- jar manifest attributes:
- MixinConnector: io.izzel.arclight.common.mod.ArclightConnector
- Implementation-Title: Arclight
- Implementation-Version: "${p.name}-${libs.versions.minecraft.get()}-${project.version}+$gitHash"
- Implementation-Vendor: Arclight Team
- Implementation-Timestamp: current timestamp
- components.java: skip variants from project.configurations.shadowRuntimeElements
- Misc
- jar.enabled = false (top-level)
- collect task (Copy) collects outputs from bootstrap jars:
- from :bootstrap forgeJar, neoforgeJar, fabricJar outputs
- destinationDir = build/libs
- uploadFiles task (UploadFilesTask)
- mcVersion.set libs.versions.minecraft
- version.set "${project.version}-${project.ext.gitHash}"
- snapshot.set project.version.toString().endsWith('-SNAPSHOT')
- gitHash.set project.ext.gitHash
- branch.set gitBranch()
- inputs.files tasks.collect.outputs.files
- dependsOn tasks.collect
Key actionable items and values to note
- Git-based versioning: gitHash, gitBranch are computed in Gradle and embedded in Version and manifest.
- Per-subproject and per-platform configuration rely on libs.versions (minecraft, bukkit.api, spigot.reversion, parchment) resolved at runtime.
- Generated spigot coordinates depend on libs.versions.minecraft.get().
- UploadFilesTask uses current branch, gitHash, and collected artifacts for distribution.# Stage 1: Builder - compile from source using Gradle wrapper
FROM eclipse-temurin:21-jdk AS builder
# Install required tools for build (JDK is provided by the base image)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy project files (order to leverage build cache)
COPY gradlew .
COPY gradle ./gradle
COPY arclight-common arclight-common
COPY . .
# Initialize a git repository to satisfy Gradle scripts that expect a git repo
RUN git init && git config user.name "builder" && git config user.email "builder@example.com" \
&& git add -A && git commit -m "initial commit"
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
CMD ["/app/start.sh"]
Build timed out after 600s
# Stage 1: Builder - compile from source using Gradle wrapper
FROM gradle:8.3-jdk21 AS builder
WORKDIR /workspace
# Copy project files (order to leverage build cache)
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY arclight-common/arclight-common /workspace/arclight-common
# Copy rest of source
COPY . .
# Initialize a git repository to satisfy Gradle scripts that expect a git repo
RUN git init \
&& git add -A \
&& git commit -m "initial commit"
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
CMD ["/app/start.sh"]
# Stage 1: Builder - compile from source using Gradle wrapper
FROM debian:bookworm-slim AS builder
# Install required tools and JDK 21 (headless) for Gradle build
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
openjdk-21-jdk-headless \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the entire project (including .git for git-based hash in Gradle)
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
EXPOSE 25565
HEALTHCHECK --interval=30s --timeout=3s CMD ["bash","-c","echo ok"]
CMD ["/app/start.sh"]
Summary of Docker build error - Failing command/step - [builder 2/6] RUN apt-get update && apt-get install -y --no-install-recommends curl unzip git ca-certificates openjdk-21-jdk-headless && rm -rf /var/lib/apt/lists/* - Exact error message and exit code - E: Unable to locate package openjdk-21-jdk-headless - The step exited with code 100 - Missing packages or files mentioned - openjdk-21-jdk-headless cannot be located in the Debian bookworm-slim apt repositories used by the builder - Version mismatch / context - Runtime base image: eclipse-temurin:21-jre-jammy - Builder base image: debian:bookworm-slim - Mismatch between the OS/base image (bookworm-slim) and attempting to install OpenJDK 21 packages (which may not be available in bookworm repositories). The required package openjdk-21-jdk-headless is not found in the current apt sources.
# Stage 1: Builder - compile from source using Gradle wrapper
FROM eclipse-temurin:21-jdk-jammy AS builder
# Install required tools for build (JDK is provided by the base image)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the entire project
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
EXPOSE 25565
HEALTHCHECK --interval=30s --timeout=3s CMD ["bash","-c","echo ok"]
CMD ["/app/start.sh"]
- Failing step (Dockerfile): RUN ./gradlew clean build --no-daemon --stacktrace (builder 6/6)
- Exact error message(s) and exit code:
- Exit code: 1 (docker build reports: “ERROR: failed to build: failed to solve: process "/bin/sh -c ./gradlew clean build --no-daemon --stacktrace" did not complete successfully: exit code: 1”)
- BUILD output includes:
- A problem occurred evaluating root project 'arclight'.
- Caused by: org.gradle.process.internal.ExecException: Process 'command 'git'' finished with non-zero exit value 128
- fatal: not a git repository (or any of the parent directories): .git
- Build file '/workspace/build.gradle' line: 18
- BUILD FAILED in 1m 13s
- Missing packages/files mentioned:
- The error arises because Gradle runs git in a directory that is not a git repository (no .git directory). The log explicitly shows: "fatal: not a git repository (or any of the parent directories): .git"
- Version mismatch / Gradle info:
- Gradle 8.13 is in use (Welcome to Gradle 8.13!)
- Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
- Guidance lines reference running with --warning-mode all for details.- Plugins
- architectury-plugin 3.4-SNAPSHOT (applied false)
- dev.architectury.loom (applied false)
- com.gradleup.shadow 8.3.+ (applied false)
- Project metadata
- group: io.izzel.arclight
- version: 1.0.2-SNAPSHOT
- versionName: feudal-kings
- gitHash: computed via git rev-parse --short HEAD
- Generated artifact coordinate
- generatedSpigot = io.izzel.arclight.generated:spigot:${libs.versions.minecraft.get()}:deobf
- Repositories
- https://repo.spongepowered.org/maven
- https://oss.sonatype.org/content/repositories/snapshots/
- https://hub.spigotmc.org/nexus/content/repositories/snapshots/
- https://maven.neoforged.net/releases
- https://files.minecraftforge.net/maven/
- https://maven.izzel.io/releases
- mavenCentral()
- mavenLocal()
- Global dependencies
- compileOnly libs.lombok
- annotationProcessor libs.lombok
- compileOnly libs.jetbrains.annotations
- common task
- cleanBuild: deletes build/libs
- Subprojects configuration (rootProject.ext.subProjects)
- Apply: architectury-plugin, dev.architectury.loom, ArclightGradlePlugin
- architectury.minecraft = libs.versions.minecraft.get()
- loom.silentMojangMappingsLicense()
- arclight: mcVersion = libs.versions.minecraft.get(); bukkitVersion = libs.versions.bukkit.api.get(); spigotReversion = libs.versions.spigot.reversion.get(); accessTransformer = rootProject.ext.commonProject.file('bukkit.at'); extraMapping = rootProject.ext.commonProject.file('extra_mapping.tsrg')
- configurations: common (canBeResolved true, canBeConsumed false); compileClasspath/runtimeClasspath/developmentForge/DevelopmentFabric/DevelopmentNeoForge extendFrom common; shadowBundle canBeResolved/consumed false
- dependencies: minecraft libs.minecraft; mappings loom.layered() with officialMojangMappings() and parchment mapping using parchment-<minecraftVersion>:<parchmentVersion>@zip
- java { withSourcesJar() }
- Platform projects configuration (rootProject.ext.platformProjects)
- Apply: dev.architectury.loom, com.gradleup.shadow
- loom: accessWidenerPath = root project's commonProject.loom.accessWidenerPath
- jar: manifest attributes
- MixinConnector: io.izzel.arclight.common.mod.ArclightConnector
- Implementation-Title: Arclight
- Implementation-Version: "<projectName>-<minecraftVersion>-<project.version>+<gitHash>"
- Implementation-Vendor: Arclight Team
- Implementation-Timestamp: current date (yyyy-MM-dd HH:mm:ss)
- components.java: withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) { skip() }
- Jar packaging
- jar.enabled = false
- Collect task
- collect (Copy): destinationDir build/libs
- from outputs of bootstrap jars: forgeJar, neoforgeJar, fabricJar
- Git branch helper
- gitBranch(): runs git rev-parse --abbrev-ref HEAD
- Upload task
- uploadFiles (UploadFilesTask)
- mcVersion: libs.versions.minecraft
- version: "${project.version}-${project.ext.gitHash}"
- snapshot: project.version endsWith('-SNAPSHOT')
- gitHash: project.ext.gitHash
- branch: gitBranch()
- inputs.files: tasks.collect.outputs.files
- dependsOn: tasks.collect
- Notes
- Version and git hash are propagated into manifest and upload logic
- Multiple platform variants rely on shared common project paths for bukkit.at and extra_mapping.tsrg# Stage 1: Builder - compile from source using Gradle wrapper
FROM gradle:8.3-jdk21 AS builder
# Install extra tools just in case
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git \
curl \
unzip \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy project files (order to leverage build cache)
COPY gradlew ./gradlew
COPY gradle ./gradle
COPY arclight-common arclight-common
COPY . .
# Ensure wrapper is executable
RUN chmod +x gradlew
# Initialize a git repository to satisfy Gradle scripts that expect a git repo
RUN git init \
&& git config user.name "builder" \
&& git config user.email "builder@example.com" \
&& git add -A \
&& git commit -m "initial commit" || true
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
EXPOSE 25565
CMD ["/app/start.sh"]
# Stage 1: Builder - compile from source using Gradle wrapper
FROM eclipse-temurin:21-jdk AS builder
# Install required tools for build (Git, curl, unzip, ca-certificates)
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl \
unzip \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the entire project into the builder
COPY . .
# Initialize a git repository to satisfy Gradle scripts that expect a git repo
RUN git init \
&& git config user.name "builder" \
&& git config user.email "builder@example.com" \
&& git add -A \
&& git commit -m "initial commit" || true
# Ensure wrapper is executable
RUN chmod +x gradlew
# Build the project from source using the wrapper
RUN ./gradlew clean build --no-daemon --stacktrace
# Stage 2: Runtime
FROM eclipse-temurin:21-jre-jammy AS runtime
WORKDIR /app
# Copy built artifacts from the builder
COPY --from=builder /workspace/build/libs /app/libs
# Startup script to pick the jar and run it
RUN printf '%s\n' '#!/bin/sh' 'set -e' 'JAR=$(ls /app/libs/*.jar 2>/dev/null | head -n 1)' 'if [ -z "$JAR" ]; then' ' echo "No jar found in /app/libs"' ' exit 1' 'fi' 'exec java -jar "$JAR" nogui' > /app/start.sh \
&& chmod +x /app/start.sh
EXPOSE 25565
CMD ["/app/start.sh"]
Build timed out after 600s
import io.izzel.arclight.gradle.ArclightGradlePlugin
import io.izzel.arclight.gradle.tasks.UploadFilesTask
plugins {
id 'architectury-plugin' version '3.4-SNAPSHOT' apply false
id 'dev.architectury.loom' apply false // version: gradle/libs.versions.toml
id 'com.gradleup.shadow' version '8.3.+' apply false
}
allprojects {
apply plugin: 'java'
group 'io.izzel.arclight'
version '1.0.2-SNAPSHOT'
def getGitHash = { ->
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
} catch (Throwable t) {
return 'unknown'
}
}
ext {
versionName = 'feudal-kings'
gitHash = getGitHash()
supportedPlatforms = ['forge', 'neoforge', 'fabric']
commonProject = project(':arclight-common')
forgeProject = project(':arclight-forge')
fabricProject = project(':arclight-fabric')
neoForgeProject = project(':arclight-neoforge')
platformProjects = [ext.forgeProject, ext.fabricProject, ext.neoForgeProject]
subProjects = ext.platformProjects + [ext.commonProject]
generatedSpigot = "io.izzel.arclight.generated:spigot:${libs.versions.minecraft.get()}:deobf"
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
maven { url = 'https://repo.spongepowered.org/maven' }
maven { url = 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
maven { url = 'https://maven.neoforged.net/releases' }
maven { url = 'https://files.minecraftforge.net/maven/' }
maven { url = 'https://maven.izzel.io/releases' }
mavenCentral()
mavenLocal()
}
dependencies {
compileOnly libs.lombok
annotationProcessor libs.lombok
compileOnly libs.jetbrains.annotations
}
tasks.register('cleanBuild') {
doFirst {
project.file("build/libs").deleteDir()
}
}
}
rootProject.ext.subProjects.each { Project p ->
configure(p) {
apply plugin: 'architectury-plugin'
apply plugin: 'dev.architectury.loom'
apply plugin: ArclightGradlePlugin
architectury {
minecraft = libs.versions.minecraft.get()
}
loom {
silentMojangMappingsLicense()
}
arclight {
mcVersion = libs.versions.minecraft.get()
bukkitVersion = libs.versions.bukkit.api.get()
spigotReversion = libs.versions.spigot.reversion.get()
accessTransformer = rootProject.ext.commonProject.file('bukkit.at')
extraMapping = rootProject.ext.commonProject.file('extra_mapping.tsrg')
}
configurations {
common {
canBeResolved = true
canBeConsumed = false
}
compileClasspath.extendsFrom common
runtimeClasspath.extendsFrom common
developmentForge.extendsFrom common
developmentFabric.extendsFrom common
developmentNeoForge.extendsFrom common
shadowBundle {
canBeResolved = true
canBeConsumed = false
}
}
dependencies {
minecraft libs.minecraft
mappings loom.layered() {
officialMojingMappings()
parchment("org.parchmentmc.data:parchment-${libs.versions.minecraft.get()}:${libs.versions.parchment.get()}@zip")
}
}
java {
withSourcesJar()
}
}
}
rootProject.ext.platformProjects.each { Project p ->
configure(p) {
apply plugin: 'dev.architectury.loom'
apply plugin: 'com.gradleup.shadow'
loom {
accessWidenerPath = getRootProject().ext.commonProject.loom.accessWidenerPath
}
jar {
manifest.attributes 'MixinConnector': 'io.izzel.arclight.common.mod.ArclightConnector'
manifest.attributes 'Implementation-Title': 'Arclight'
manifest.attributes 'Implementation-Version': "${p.name}-${libs.versions.minecraft.get()}-${project.version}+${gitHash}"
manifest.attributes 'Implementation-Vendor': 'Arclight Team'
manifest.attributes 'Implementation-Timestamp': new Date().format("yyyy-MM-dd HH:mm:ss")
}
components.java {
withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
skip()
}
}
}
}
jar.enabled = false
tasks.register('collect', Copy) {
destinationDir = file('build/libs')
from project(':bootstrap').tasks.forgeJar.outputs
from project(':bootstrap').tasks.neoforgeJar.outputs
from project(':bootstrap').tasks.fabricJar.outputs
}
def gitBranch() {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--abbrev-ref', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}
tasks.register('uploadFiles', UploadFilesTask) {
mcVersion.set libs.versions.minecraft
version.set "${project.version}-${gitHash}"
snapshot.set project.version.toString().endsWith('-SNAPSHOT')
gitHash.set project.ext.gitHash
branch.set gitBranch()
inputs.files tasks.collect.outputs.files
dependsOn(tasks.collect)
}
Dockerfile .dockerignore build .gradle out .gradle .idea *.iml *.class *.jar
- Status: VerifyBuild: build_failed - Observations - Jar selection risk: /app/libs may pick non-release artifacts if multiple jars exist; filter by expected artifact naming. - Smoke tests check existence and syntax but don’t health-check a running server; consider a non-blocking health check or temporary port probe. - Build details - Failing step: Dockerfile step 29 — RUN ./gradlew clean build --no-daemon --stacktrace - Exit: 1 (BUILD FAILED in 1m 11s) - Exact error messages to preserve - A problem occurred evaluating root project 'arclight'. > Could not find method officialMojingMappings() for arguments [] on object of type net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpecBuilderImpl. - Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method officialMojingMappings() for arguments [] on object of type net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpecBuilderImpl. - Failing command/step details - Dockerfile: step 29 (Gradle build) - Build initially reached: BUILD FAILED in 1m 11s (during that Gradle run) - Missing packages/files - None explicitly missing. apt-get step completed; no missing-file messages. - Version/compatibility info - Gradle: 8.13 - Architect Plugin: 3.4.162 - Architectury Loom: 1.9.436 - Warning: outdated Loom; update recommended - Deprecated Gradle features used; not compatible with Gradle 9.0 - Likely cause - DSL method name mismatch: could not find officialMojingMappings(); likely a typo or mismatch with Loom DSL (probably intended officialMojangMappings()). Build.gradle around line 115 shows the invocation. - Quick next steps (actionable) - Inspect build.gradle around lines 112–115 for the mapping configuration; verify typo: officialMojingMappings vs officialMojangMappings. - Ensure Fabric Loom / Architectury Loom versions are compatible with Gradle 8.13; consider updating Loom plugins as warned. - If the project expects officialMojangMappings(), update the method name or align with the Loom version used.