64 lines
1.8 KiB
Docker
64 lines
1.8 KiB
Docker
# Build stage
|
|
FROM debian:13@sha256:fac46bff2e02f51425b6e33b0e1169f55dfb053d83511ca28aa50c09fd5ed7a4 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:020c0d20b9880058cbe785a9db107156c3c75c2ac944a6aa7ab59f2add76a7bd
|
|
|
|
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"]
|