# syntax=docker/dockerfile:1.7 FROM ubuntu:24.04 AS builder ARG BUILD_TYPE=Release ARG BUILD_JOBS=2 ENV DEBIAN_FRONTEND=noninteractive RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ apt-get update \ && apt-get install -y --no-install-recommends \ build-essential \ ca-certificates \ cmake \ git \ libboost-filesystem-dev \ libboost-iostreams-dev \ libboost-locale-dev \ libboost-program-options-dev \ libboost-regex-dev \ libboost-system-dev \ libboost-thread-dev \ libbz2-dev \ libcurl4-openssl-dev \ libmariadb-dev \ libmariadb-dev-compat \ libncurses-dev \ libreadline-dev \ libssl-dev \ zlib1g-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /src COPY . . RUN cmake -S . -B /build \ -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \ -DCMAKE_INSTALL_PREFIX=/opt/sylvania \ -DTOOLS=OFF \ && cmake --build /build --parallel "${BUILD_JOBS}" \ && cmake --install /build FROM ubuntu:24.04 AS runtime ENV DEBIAN_FRONTEND=noninteractive RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ libboost-filesystem1.83.0 \ libboost-iostreams1.83.0 \ libboost-locale1.83.0 \ libboost-program-options1.83.0 \ libboost-regex1.83.0 \ libboost-system1.83.0 \ libboost-thread1.83.0 \ libbz2-1.0 \ libcurl4t64 \ libmariadb3 \ libncurses6 \ libreadline8t64 \ libssl3t64 \ mariadb-client \ zlib1g \ && rm -rf /var/lib/apt/lists/* \ && useradd --system --uid 10001 --home /opt/sylvania --shell /usr/sbin/nologin sylvania COPY --from=builder /opt/sylvania /opt/sylvania COPY docker/entrypoint.sh /usr/local/bin/sylvania-entrypoint RUN chmod +x /usr/local/bin/sylvania-entrypoint \ && mkdir -p /opt/sylvania/data /opt/sylvania/logs \ && chown -R sylvania:sylvania /opt/sylvania USER sylvania WORKDIR /opt/sylvania EXPOSE 1119 8081 8085 ENTRYPOINT ["sylvania-entrypoint"] CMD ["worldserver"]