61 lines
1.5 KiB
Docker
61 lines
1.5 KiB
Docker
# Build stage
|
|
FROM debian:trixie-20260623@sha256:d07d1b51c39f51188e60be9b64e6bf769fa94e187f092bc32b91305cfa34ba5a 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
|
|
FROM debian:bookworm-slim@sha256:60eac759739651111db372c07be67863818726f754804b8707c90979bda511df
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
libcurl3-gnutls \
|
|
liblzma5 \
|
|
liblzo2-2 \
|
|
libpng16-16 \
|
|
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"]
|