production setup
This commit is contained in:
+83
@@ -0,0 +1,83 @@
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user