FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive ENV WINEPREFIX=/data/wineprefix ENV DXVK_VERSION=2.3 ENV STEAMCMD_DIR=/opt/steamcmd # Enable 32-bit architecture and install Wine + Vulkan + dependencies RUN dpkg --add-architecture i386 && \ apt update && \ apt install -y --no-install-recommends \ ca-certificates \ wget \ unzip \ tar \ xvfb \ xauth \ x11-apps \ libx11-6 \ libx11-dev \ libxext6 \ libxext-dev \ libxrender1 \ libxrender-dev \ libxrandr2 \ libxrandr-dev \ libfreetype6 \ libfreetype6-dev \ libfontconfig1 \ libfontconfig1-dev \ libvulkan1 \ libvulkan1:i386 \ mesa-vulkan-drivers \ mesa-vulkan-drivers:i386 \ wine64 \ wine32 \ winbind \ python3 \ git \ curl \ cabextract \ fonts-wine \ && rm -rf /var/lib/apt/lists/* # Initialize Wine prefix (prevents first-run crashes) RUN mkdir -p /data/wineprefix && \ wine64 wineboot --init || true # Install Node 18 LTS RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ apt install -y nodejs # SteamCMD RUN mkdir -p ${STEAMCMD_DIR} && \ cd ${STEAMCMD_DIR} && \ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && \ tar -xvzf steamcmd_linux.tar.gz # DXVK RUN mkdir -p /data/dxvk && \ cd /data/dxvk && \ wget https://github.com/doitsujin/dxvk/releases/download/v${DXVK_VERSION}/dxvk-${DXVK_VERSION}.tar.gz && \ tar -xvzf dxvk-${DXVK_VERSION}.tar.gz # Manager service WORKDIR /app COPY package*.json ./ RUN npm install COPY . . # Entrypoint COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh VOLUME ["/data"] ENTRYPOINT ["/entrypoint.sh"]