48 lines
2.1 KiB
Docker
48 lines
2.1 KiB
Docker
# first image, simply get/unpack the steamcmd tarball
|
|
FROM fedora:39 as builder
|
|
LABEL maintainer="me@jlay.io" \
|
|
org.opencontainers.image.authors="me@jlay.io"
|
|
WORKDIR /root
|
|
RUN curl -sq http://media.steampowered.com/installer/steamcmd_linux.tar.gz | tar -xvz
|
|
|
|
# second/real image: copy the unpacked tarball into an updated/prepared Fedora environment
|
|
FROM fedora:39
|
|
LABEL maintainer="me@jlay.io" \
|
|
org.opencontainers.image.authors="me@jlay.io"
|
|
ENV PATH="/opt/steamcmd:${PATH}"
|
|
|
|
# Install, update & upgrade packages
|
|
RUN set -x ; \
|
|
mkdir -vp /opt/steamcmd/linux32 ; \
|
|
sed -i -e 's/^LANG=".*"$/LANG="en_US.UTF-8"/' /etc/locale.conf ; \
|
|
(echo -e 'max_parallel_downloads=20\nfastestmirror=False\ndeltarpm=False' | tee -a /etc/dnf/dnf.conf) ; \
|
|
dnf --setopt=logdir=/tmp/dnf-prep-logs --setopt=cachedir=/tmp/dnf-prep-cache -qy up ; \
|
|
dnf --setopt=logdir=/tmp/dnf-prep-logs --setopt=cachedir=/tmp/dnf-prep-cache -qy install \
|
|
util-linux \
|
|
ca-certificates \
|
|
libgcc.{x86_64,i686} \
|
|
libstdc++.{x86_64,i686} \
|
|
glibc.{x86_64,i686} \
|
|
SDL2.{x86_64,i686} \
|
|
glibc-langpack-en ; \
|
|
find /tmp/dnf-prep-logs /tmp/dnf-prep-cache -delete
|
|
|
|
# from the builder, copy the extracted steamcmd bits
|
|
# COPY doesn't take directories with it, only their contents. so dumb.
|
|
COPY --from=builder /root/steam*.sh /opt/steamcmd
|
|
COPY --from=builder /root/linux32/* /opt/steamcmd/linux32/
|
|
|
|
# Make the Steam libraries permanently part of the environment
|
|
# for those who this inspires, a note:
|
|
# I would only recommend this *in containers*.
|
|
# it's remarkably easy to break loosely-linked software like this.
|
|
RUN echo '/opt/steamcmd/linux32' | tee /etc/ld.so.conf.d/steam.conf ; ldconfig ; \
|
|
ln -sv /opt/steamcmd/linux32/steam{client,service}.so
|
|
# also, map steamclient.so -> steamservice.so. this silences some complaints
|
|
|
|
# test steamcmd; ensure function and updates
|
|
RUN steamcmd.sh +quit
|
|
|
|
# default cmd, steamcmd 'installed' to /opt. required extending $PATH in env above
|
|
ENTRYPOINT ["steamcmd.sh"]
|
|
CMD ["+help", ""+quit"]
|