64 lines
1.8 KiB
Docker
64 lines
1.8 KiB
Docker
# Build stage
|
|
FROM debian:13@sha256:9c6e381421d0f48d1b8133e573f33c185ee16cbf505eda9c4a8a4791b25ea8a6 AS builder
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
cmake \
|
|
git \
|
|
libcurl4-gnutls-dev \
|
|
liblzma-dev \
|
|
liblzo2-dev \
|
|
libpng-dev \
|
|
libzstd-dev \
|
|
zlib1g-dev \
|
|
pkg-config \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /src
|
|
COPY OpenTTD-patches /src/OpenTTD-patches
|
|
|
|
WORKDIR /src/OpenTTD-patches/build
|
|
RUN cmake .. \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DOPTION_DEDICATED=ON \
|
|
-DOPTION_INSTALL_HTML_DOCS=OFF \
|
|
-DOPTION_USE_ASSERTS=OFF \
|
|
&& make -j$(nproc) install
|
|
|
|
# Runtime stage
|
|
# Must track the builder's Debian release: the builder (debian:13/trixie) links
|
|
# against glibc 2.38+, so an older runtime (e.g. bookworm, glibc 2.36) cannot run
|
|
# the resulting binary. Package names use the trixie t64 spelling.
|
|
FROM debian:trixie-slim@sha256:f6b08b09a05725f9431502d3b5714f5c4576e82c1a84fa1debe0c24a7e0c3ec4
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
libcurl3t64-gnutls \
|
|
liblzma5 \
|
|
liblzo2-2 \
|
|
libpng16-16t64 \
|
|
libzstd1 \
|
|
zlib1g \
|
|
ca-certificates \
|
|
openttd-opengfx \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy binaries from builder
|
|
COPY --from=builder /usr/local/games/openttd /usr/local/bin/openttd
|
|
COPY --from=builder /usr/local/share/games/openttd /usr/local/share/games/openttd
|
|
|
|
# Ensure base graphics are in a path openttd searches
|
|
RUN mkdir -p /usr/local/share/games/openttd/baseset && \
|
|
cp -r /usr/share/games/openttd/baseset/* /usr/local/share/games/openttd/baseset/
|
|
|
|
# Create openttd user
|
|
RUN useradd -m -u 1000 openttd
|
|
USER openttd
|
|
WORKDIR /home/openttd
|
|
|
|
# Create config directory
|
|
RUN mkdir -p /home/openttd/.local/share/openttd/save
|
|
|
|
EXPOSE 3979/tcp 3979/udp 3977/tcp
|
|
|
|
CMD ["openttd", "-D"]
|