Enhance Dockerfile and README for Wine + .NET SDK setup

- Updated Dockerfile to include necessary X11 packages for Wine.
- Improved initialization of Wine prefix with virtual display.
- Modified .NET installation to utilize virtual display.
- Updated README to reflect changes in usage instructions and removed PowerShell build instructions.
This commit is contained in:
2025-07-06 23:58:07 +02:00
parent ee014e3c6d
commit 4e18d0fac1
2 changed files with 44 additions and 18 deletions

View File

@@ -4,7 +4,7 @@ FROM ubuntu:22.04
# Avoid interactive prompts during installation
ENV DEBIAN_FRONTEND=noninteractive
# Update system and install necessary packages
# Update system and install necessary packages including X11 for Wine
RUN apt-get update && apt-get install -y \
software-properties-common \
wget \
@@ -12,6 +12,10 @@ RUN apt-get update && apt-get install -y \
gnupg2 \
ca-certificates \
apt-transport-https \
xvfb \
x11-utils \
x11-xserver-utils \
dbus-x11 \
&& rm -rf /var/lib/apt/lists/*
# Add Wine repository and install Wine 64-bit
@@ -28,25 +32,41 @@ RUN useradd -m -s /bin/bash wineuser
USER wineuser
WORKDIR /home/wineuser
# Initialize Wine prefix
RUN winecfg /v
# Set Wine to 64-bit mode
ENV WINEARCH=win64
ENV WINEPREFIX=/home/wineuser/.wine
ENV DISPLAY=:99
# Download and install .NET SDK
# Initialize Wine prefix with virtual display
RUN Xvfb :99 -screen 0 1024x768x16 & \
sleep 2 && \
winecfg -v && \
pkill Xvfb
# Download and install .NET SDK with virtual display
RUN cd /tmp \
&& wget https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.301/dotnet-sdk-9.0.301-win-x64.exe \
&& wine dotnet-sdk-9.0.301-win-x64.exe /quiet /install \
&& Xvfb :99 -screen 0 1024x768x16 & \
&& sleep 2 \
&& wine dotnet-sdk-9.0.301-win-x64.exe /S /v/qn \
&& pkill Xvfb \
&& rm dotnet-sdk-9.0.301-win-x64.exe
# Set environment variables for .NET
ENV DOTNET_ROOT="$WINEPREFIX/drive_c/Program Files/dotnet"
ENV PATH="$DOTNET_ROOT:$PATH"
# Create a script to run .NET commands with virtual display
RUN echo '#!/bin/bash' > /home/wineuser/run-dotnet.sh \
&& echo 'Xvfb :99 -screen 0 1024x768x16 & XVFB_PID=$!' >> /home/wineuser/run-dotnet.sh \
&& echo 'sleep 2' >> /home/wineuser/run-dotnet.sh \
&& echo 'export DISPLAY=:99' >> /home/wineuser/run-dotnet.sh \
&& echo 'wine dotnet "$@"' >> /home/wineuser/run-dotnet.sh \
&& echo 'kill $XVFB_PID' >> /home/wineuser/run-dotnet.sh \
&& chmod +x /home/wineuser/run-dotnet.sh
# Verify installation
RUN wine dotnet --version
RUN /home/wineuser/run-dotnet.sh --version
# Set working directory for projects
WORKDIR /home/wineuser/projects