Files
2026-08-31 21:32:14 +04:00

84 lines
2.3 KiB
Docker

# 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"]