Skip to content

Commit 047d00a

Browse files
authored
Docker fixes & improvements (#2202)
- Changed gradlew line endings to fix Docker build, fixes #2157 - Use more up to date JDK Docker image - Expose UDP port by default - Don't ask for language on first Docker run - No git submodules are used anymore
1 parent bfb30cd commit 047d00a

File tree

5 files changed

+49
-34
lines changed

5 files changed

+49
-34
lines changed

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
# Auto detect text files and perform LF normalization
22
*.java text=auto eol=lf
3+
4+
gradlew text eol=lf

.gitmodules

Whitespace-only changes.

Dockerfile

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,20 @@
33
# Requires Docker v17.05
44

55
# Use OpenJDK JDK image for intermiediate build
6-
FROM openjdk:8-jdk-slim AS build
6+
FROM eclipse-temurin:8-jdk-jammy AS build
77

88
# Build from source and create artifact
99
WORKDIR /src
1010

11-
COPY gradlew *.gradle.kts .gitmodules /src/
11+
COPY gradlew *.gradle.kts /src/
1212
COPY src /src/src
1313
COPY .git /src/.git
1414
COPY gradle /src/gradle
1515

16-
RUN apt-get clean \
17-
&& apt-get update \
18-
&& apt install git -y
19-
RUN git submodule update --init
2016
RUN ./gradlew shadowJar
2117

2218
# Use OpenJDK JRE image for runtime
23-
FROM openjdk:8-jre-slim AS run
24-
LABEL maintainer="Micheal Waltz <[email protected]>"
19+
FROM eclipse-temurin:8-jdk-jammy AS run
2520

2621
# Copy artifact from build image
2722
COPY --from=build /src/target/nukkit-1.0-SNAPSHOT.jar /app/nukkit.jar
@@ -34,7 +29,8 @@ RUN useradd --user-group \
3429
minecraft
3530

3631
# Ports
37-
EXPOSE 19132
32+
EXPOSE 19132/tcp
33+
EXPOSE 19132/udp
3834

3935
RUN mkdir /data && mkdir /home/minecraft
4036
RUN chown -R minecraft:minecraft /app /data /home/minecraft
@@ -50,4 +46,4 @@ WORKDIR /data
5046

5147
# Run app
5248
ENTRYPOINT ["java"]
53-
CMD [ "-jar", "/app/nukkit.jar" ]
49+
CMD [ "-jar", "/app/nukkit.jar", "--language", "eng" ]

Dockerfile.arm64

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,49 @@
1-
FROM arm64v8/openjdk:8-jdk-slim AS build
2-
WORKDIR /usr/local/src/nukkit
3-
COPY src /usr/local/src/nukkit/src
4-
COPY gradlew *.gradle.kts .gitmodules /src/
1+
# This Dockerfile uses Docker Multi-Stage Builds
2+
# See https://docs.docker.com/engine/userguide/eng-image/multistage-build/
3+
# Requires Docker v17.05
4+
5+
# Use OpenJDK JDK image for intermiediate build
6+
FROM --platform=linux/arm64 eclipse-temurin:8-jdk-jammy AS build
7+
8+
# Build from source and create artifact
9+
WORKDIR /src
10+
11+
COPY gradlew *.gradle.kts /src/
512
COPY src /src/src
613
COPY .git /src/.git
714
COPY gradle /src/gradle
8-
RUN git submodule update --init && \
9-
./gradlew shadowJar
1015

11-
FROM arm64v8/openjdk:8-jre-slim AS run
12-
LABEL maintainer="Chris Fordham <[email protected]>"
13-
COPY --from=build /usr/local/src/nukkit/target/nukkit-1.0-SNAPSHOT.jar /opt/nukkit/nukkit.jar
14-
COPY nukkit.yml.default /etc/opt/nukkit/nukkit.yml
16+
RUN ./gradlew shadowJar
17+
18+
# Use OpenJDK JRE image for runtime
19+
FROM --platform=linux/arm64 eclipse-temurin:8-jdk-jammy AS run
20+
21+
# Copy artifact from build image
22+
COPY --from=build /src/target/nukkit-1.0-SNAPSHOT.jar /app/nukkit.jar
23+
24+
# Create minecraft user
1525
RUN useradd --user-group \
1626
--no-create-home \
17-
--home-dir /var/opt/nukkit \
27+
--home-dir /data \
1828
--shell /usr/sbin/nologin \
19-
minecraft && \
20-
mkdir -p /var/opt/nukkit && \
21-
chown -R minecraft /opt/nukkit /var/opt/nukkit /etc/opt/nukkit/nukkit.yml && \
22-
ln -sfv /etc/opt/nukkit/nukkit.yml /var/opt/nukkit/nukkit.yml && \
23-
apt-get -y update && \
24-
apt-get -y install lsof && \
25-
rm -rf /var/lib/apt/lists/*
26-
USER minecraft
27-
VOLUME /etc/opt/nukkit /var/opt/nukkit /opt/nukkit
28-
EXPOSE 19132
29-
WORKDIR /var/opt/nukkit
29+
minecraft
30+
31+
# Ports
32+
EXPOSE 19132/tcp
33+
EXPOSE 19132/udp
34+
35+
RUN mkdir /data && mkdir /home/minecraft
36+
RUN chown -R minecraft:minecraft /app /data /home/minecraft
37+
38+
# User and group to run as
39+
USER minecraft:minecraft
40+
41+
# Volumes
42+
VOLUME /data /home/minecraft
43+
44+
# Set runtime workdir
45+
WORKDIR /data
46+
47+
# Run app
3048
ENTRYPOINT ["java"]
31-
CMD [ "-jar", "/opt/nukkit/nukkit.jar" ]
49+
CMD [ "-jar", "/app/nukkit.jar", "--language", "eng" ]

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ Compile Nukkit
2828
-------------
2929
- `git clone https://github.com/CloudburstMC/Nukkit`
3030
- `cd Nukkit`
31-
- `git submodule update --init`
3231
- `./gradlew shadowJar`
3332

3433
The compiled JAR can be found in the `target/` directory.

0 commit comments

Comments
 (0)