diff --git a/.gitattributes b/.gitattributes index 8147bf8dd8b..30f5930728d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,4 @@ # Auto detect text files and perform LF normalization *.java text=auto eol=lf + +gradlew text eol=lf diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/Dockerfile b/Dockerfile index 71acf5d68d3..36e1618e0df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,25 +3,20 @@ # Requires Docker v17.05 # Use OpenJDK JDK image for intermiediate build -FROM openjdk:8-jdk-slim AS build +FROM eclipse-temurin:8-jdk-jammy AS build # Build from source and create artifact WORKDIR /src -COPY gradlew *.gradle.kts .gitmodules /src/ +COPY gradlew *.gradle.kts /src/ COPY src /src/src COPY .git /src/.git COPY gradle /src/gradle -RUN apt-get clean \ - && apt-get update \ - && apt install git -y -RUN git submodule update --init RUN ./gradlew shadowJar # Use OpenJDK JRE image for runtime -FROM openjdk:8-jre-slim AS run -LABEL maintainer="Micheal Waltz " +FROM eclipse-temurin:8-jdk-jammy AS run # Copy artifact from build image COPY --from=build /src/target/nukkit-1.0-SNAPSHOT.jar /app/nukkit.jar @@ -34,7 +29,8 @@ RUN useradd --user-group \ minecraft # Ports -EXPOSE 19132 +EXPOSE 19132/tcp +EXPOSE 19132/udp RUN mkdir /data && mkdir /home/minecraft RUN chown -R minecraft:minecraft /app /data /home/minecraft @@ -50,4 +46,4 @@ WORKDIR /data # Run app ENTRYPOINT ["java"] -CMD [ "-jar", "/app/nukkit.jar" ] +CMD [ "-jar", "/app/nukkit.jar", "--language", "eng" ] diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 index 6e7362aecf0..25279db89e8 100644 --- a/Dockerfile.arm64 +++ b/Dockerfile.arm64 @@ -1,31 +1,49 @@ -FROM arm64v8/openjdk:8-jdk-slim AS build -WORKDIR /usr/local/src/nukkit -COPY src /usr/local/src/nukkit/src -COPY gradlew *.gradle.kts .gitmodules /src/ +# This Dockerfile uses Docker Multi-Stage Builds +# See https://docs.docker.com/engine/userguide/eng-image/multistage-build/ +# Requires Docker v17.05 + +# Use OpenJDK JDK image for intermiediate build +FROM --platform=linux/arm64 eclipse-temurin:8-jdk-jammy AS build + +# Build from source and create artifact +WORKDIR /src + +COPY gradlew *.gradle.kts /src/ COPY src /src/src COPY .git /src/.git COPY gradle /src/gradle -RUN git submodule update --init && \ - ./gradlew shadowJar -FROM arm64v8/openjdk:8-jre-slim AS run -LABEL maintainer="Chris Fordham " -COPY --from=build /usr/local/src/nukkit/target/nukkit-1.0-SNAPSHOT.jar /opt/nukkit/nukkit.jar -COPY nukkit.yml.default /etc/opt/nukkit/nukkit.yml +RUN ./gradlew shadowJar + +# Use OpenJDK JRE image for runtime +FROM --platform=linux/arm64 eclipse-temurin:8-jdk-jammy AS run + +# Copy artifact from build image +COPY --from=build /src/target/nukkit-1.0-SNAPSHOT.jar /app/nukkit.jar + +# Create minecraft user RUN useradd --user-group \ --no-create-home \ - --home-dir /var/opt/nukkit \ + --home-dir /data \ --shell /usr/sbin/nologin \ - minecraft && \ - mkdir -p /var/opt/nukkit && \ - chown -R minecraft /opt/nukkit /var/opt/nukkit /etc/opt/nukkit/nukkit.yml && \ - ln -sfv /etc/opt/nukkit/nukkit.yml /var/opt/nukkit/nukkit.yml && \ - apt-get -y update && \ - apt-get -y install lsof && \ - rm -rf /var/lib/apt/lists/* -USER minecraft -VOLUME /etc/opt/nukkit /var/opt/nukkit /opt/nukkit -EXPOSE 19132 -WORKDIR /var/opt/nukkit + minecraft + +# Ports +EXPOSE 19132/tcp +EXPOSE 19132/udp + +RUN mkdir /data && mkdir /home/minecraft +RUN chown -R minecraft:minecraft /app /data /home/minecraft + +# User and group to run as +USER minecraft:minecraft + +# Volumes +VOLUME /data /home/minecraft + +# Set runtime workdir +WORKDIR /data + +# Run app ENTRYPOINT ["java"] -CMD [ "-jar", "/opt/nukkit/nukkit.jar" ] +CMD [ "-jar", "/app/nukkit.jar", "--language", "eng" ] diff --git a/README.md b/README.md index 620b263e8c4..4b47457f75d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,6 @@ Compile Nukkit ------------- - `git clone https://github.com/CloudburstMC/Nukkit` - `cd Nukkit` -- `git submodule update --init` - `./gradlew shadowJar` The compiled JAR can be found in the `target/` directory.