53 lines
1.1 KiB
Docker
53 lines
1.1 KiB
Docker
##############
|
|
# BASE STAGE #
|
|
##############
|
|
|
|
FROM alpine:3.20 AS base
|
|
|
|
# Add OpenJDK17
|
|
RUN apk add --no-cache openjdk17
|
|
|
|
# Uses /kepler directory
|
|
WORKDIR /kepler
|
|
|
|
###############
|
|
# BUILD STAGE #
|
|
###############
|
|
|
|
FROM base AS build
|
|
|
|
# Add unzip
|
|
RUN apk add --no-cache unzip=6.0-r14
|
|
|
|
# Copy every files/folders that are not in .dockerignore
|
|
COPY . .
|
|
|
|
# Convert CRLF to LF executable files (failing build for Windows without this)
|
|
RUN sed -i 's/\r$//' gradlew tools/scripts/run.sh
|
|
|
|
# Make gradlew and run.sh executable
|
|
RUN chmod +x gradlew tools/scripts/run.sh
|
|
|
|
# Run gradle build
|
|
RUN ./gradlew distZip
|
|
|
|
# Unzip builded Kepler server
|
|
RUN unzip -qq ./Kepler-Server/build/distributions/Kepler-Server.zip -d ./release
|
|
|
|
# Prepare build directory
|
|
RUN rm -rf ./release/Kepler-Server/bin && \
|
|
mkdir -p ./build/lib && \
|
|
mv ./release/Kepler-Server/lib/Kepler-Server.jar ./build/kepler.jar && \
|
|
mv ./release/Kepler-Server/lib/* ./build/lib && \
|
|
cp tools/scripts/run.sh ./build/
|
|
|
|
####################
|
|
# PRODUCTION STAGE #
|
|
####################
|
|
|
|
FROM base AS production
|
|
|
|
# Copy builded Kepler server
|
|
COPY --from=build /kepler/build ./
|
|
|
|
CMD [ "sh", "run.sh" ] |