84 lines
2.3 KiB
Docker
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"]
|