Compare commits
33 Commits
4e18d0fac1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2b951a139a | |||
| dd68165b38 | |||
| 6fe3032136 | |||
| e755a61fa7 | |||
| d2099f3661 | |||
| 8cc1dcca5d | |||
| ba52f7fa11 | |||
| 26bcd42074 | |||
| 72f5f9500f | |||
| 34ba226952 | |||
| 65e658ce80 | |||
| be46b28bac | |||
| 77a5105695 | |||
| c8c901bd7f | |||
| 87a1ee9295 | |||
| 63e4af21c6 | |||
| 0e7416a9c6 | |||
| 8fc5c7c334 | |||
| ec3cb05297 | |||
| f0b007c6f9 | |||
| 12091eb3bc | |||
| 0e663abb0a | |||
| c96ccee9b8 | |||
| 683701d067 | |||
| e2b30b3f9e | |||
| 754eabf1e5 | |||
| e5c7731ecb | |||
| c7a5881445 | |||
| fefc086ed2 | |||
| a8c0bce094 | |||
| ca70979c85 | |||
| adc4393c88 | |||
| 5e696ad8c0 |
89
Dockerfile
89
Dockerfile
@@ -1,75 +1,28 @@
|
|||||||
# Use Ubuntu as base image for better Wine support
|
FROM --platform=$TARGETOS/$TARGETARCH ghcr.io/parkervcp/yolks:debian
|
||||||
FROM ubuntu:22.04
|
|
||||||
|
|
||||||
# Avoid interactive prompts during installation
|
LABEL author="Torsten Widmann" maintainer="info@goover.de"
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
# Update system and install necessary packages including X11 for Wine
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
software-properties-common \
|
|
||||||
wget \
|
|
||||||
curl \
|
|
||||||
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
|
RUN apt update -y \
|
||||||
RUN dpkg --add-architecture i386 \
|
&& apt upgrade -y \
|
||||||
&& mkdir -pm755 /etc/apt/keyrings \
|
&& apt install -y apt-transport-https wget curl iproute2 libgdiplus tini \
|
||||||
&& wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key \
|
&& wget https://dot.net/v1/dotnet-install.sh \
|
||||||
&& wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources \
|
&& D_V="$(curl -sSL https://dotnet.microsoft.com/en-us/download/dotnet/9.0 | grep -i '<h3 id="sdk-9.*">SDK 9.*.*</h3>' | head -1 | awk -F\" '{print $3}' | awk '{print $2;}' | sed 's/<\/h3>//g')" \
|
||||||
&& apt-get update \
|
&& chmod +x dotnet-install.sh \
|
||||||
&& apt-get install -y --install-recommends winehq-stable \
|
&& ./dotnet-install.sh -i /usr/share -v $D_V \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& ln -s /usr/share/dotnet /usr/bin/dotnet \
|
||||||
|
&& apt clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Create a wine user to avoid running as root
|
USER container
|
||||||
RUN useradd -m -s /bin/bash wineuser
|
ENV USER=container HOME=/home/container
|
||||||
USER wineuser
|
|
||||||
WORKDIR /home/wineuser
|
|
||||||
|
|
||||||
# Set Wine to 64-bit mode
|
WORKDIR /home/container
|
||||||
ENV WINEARCH=win64
|
|
||||||
ENV WINEPREFIX=/home/wineuser/.wine
|
|
||||||
ENV DISPLAY=:99
|
|
||||||
|
|
||||||
# Initialize Wine prefix with virtual display
|
STOPSIGNAL SIGINT
|
||||||
RUN Xvfb :99 -screen 0 1024x768x16 & \
|
|
||||||
sleep 2 && \
|
|
||||||
winecfg -v && \
|
|
||||||
pkill Xvfb
|
|
||||||
|
|
||||||
# Download and install .NET SDK with virtual display
|
COPY --chown=container:container ./../entrypoint.sh /entrypoint.sh
|
||||||
RUN cd /tmp \
|
RUN chmod +x /entrypoint.sh
|
||||||
&& wget https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.301/dotnet-sdk-9.0.301-win-x64.exe \
|
ENTRYPOINT ["/usr/bin/tini", "-g", "--"]
|
||||||
&& Xvfb :99 -screen 0 1024x768x16 & \
|
CMD ["/entrypoint.sh"]
|
||||||
&& 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 /home/wineuser/run-dotnet.sh --version
|
|
||||||
|
|
||||||
# Set working directory for projects
|
|
||||||
WORKDIR /home/wineuser/projects
|
|
||||||
|
|
||||||
# Default command
|
|
||||||
CMD ["/bin/bash"]
|
|
||||||
76
README.md
76
README.md
@@ -1,76 +0,0 @@
|
|||||||
# Wine + .NET SDK Docker Image
|
|
||||||
|
|
||||||
Ez a Docker image telepíti a Wine 64-bit verzióját és a Microsoft .NET SDK 9.0.301-et Windows-on keresztül.
|
|
||||||
|
|
||||||
## Tartalom
|
|
||||||
|
|
||||||
- Ubuntu 22.04 alapú image
|
|
||||||
- Wine 64-bit (stable verzió)
|
|
||||||
- .NET SDK 9.0.301 (Windows x64)
|
|
||||||
|
|
||||||
## Build
|
|
||||||
|
|
||||||
### Bash-sel (Git Bash, WSL, Linux, macOS):
|
|
||||||
```bash
|
|
||||||
chmod +x build.sh
|
|
||||||
./build.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### Manuálisan:
|
|
||||||
```bash
|
|
||||||
docker build -t wine-dotnet:latest .
|
|
||||||
```
|
|
||||||
|
|
||||||
## Használat
|
|
||||||
|
|
||||||
### Alapvető futtatás:
|
|
||||||
```bash
|
|
||||||
docker run -it --rm wine-dotnet:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
### Projektekkel való munka (volume mounting):
|
|
||||||
```bash
|
|
||||||
docker run -it --rm -v $(pwd)/projects:/home/wineuser/projects wine-dotnet:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
Windows PowerShell-ben:
|
|
||||||
```powershell
|
|
||||||
docker run -it --rm -v ${PWD}/projects:/home/wineuser/projects wine-dotnet:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
## .NET használata a containerben
|
|
||||||
|
|
||||||
A containerben belül használhatod a .NET SDK-t a speciális script segítségével:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# .NET verzió ellenőrzése
|
|
||||||
./run-dotnet.sh --version
|
|
||||||
|
|
||||||
# Új projekt létrehozása
|
|
||||||
./run-dotnet.sh new console -n MyApp
|
|
||||||
|
|
||||||
# Projekt build-elése
|
|
||||||
cd MyApp
|
|
||||||
../run-dotnet.sh build
|
|
||||||
|
|
||||||
# Projekt futtatása
|
|
||||||
../run-dotnet.sh run
|
|
||||||
```
|
|
||||||
|
|
||||||
Alternatívaként közvetlenül is használhatod:
|
|
||||||
```bash
|
|
||||||
# Virtual display indítása
|
|
||||||
Xvfb :99 -screen 0 1024x768x16 &
|
|
||||||
export DISPLAY=:99
|
|
||||||
|
|
||||||
# .NET parancsok
|
|
||||||
wine dotnet --version
|
|
||||||
```
|
|
||||||
|
|
||||||
## Megjegyzések
|
|
||||||
|
|
||||||
- A container egy `wineuser` felhasználóval fut (nem root)
|
|
||||||
- A Wine prefix előre konfigurálva van 64-bit módban
|
|
||||||
- A .NET SDK csendben telepítve van virtual display segítségével
|
|
||||||
- A projektek a `/home/wineuser/projects` könyvtárban tárolhatók
|
|
||||||
- A `run-dotnet.sh` script automatikusan kezeli a virtual display-t
|
|
||||||
17
build.sh
17
build.sh
@@ -1,17 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Build the Docker image
|
|
||||||
echo "Building Wine + .NET SDK Docker image..."
|
|
||||||
docker build -t wine-dotnet:latest .
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "✅ Docker image built successfully!"
|
|
||||||
echo "To run the container:"
|
|
||||||
echo "docker run -it --rm wine-dotnet:latest"
|
|
||||||
echo ""
|
|
||||||
echo "To run with volume mounting (for development):"
|
|
||||||
echo "docker run -it --rm -v \$(pwd)/projects:/home/wineuser/projects wine-dotnet:latest"
|
|
||||||
else
|
|
||||||
echo "❌ Failed to build Docker image"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
21
entrypoint.sh
Normal file
21
entrypoint.sh
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cd /home/container
|
||||||
|
|
||||||
|
# Set environment variable that holds the Internal Docker IP
|
||||||
|
INTERNAL_IP=$(ip route get 1 | awk '{print $(NF-2);exit}')
|
||||||
|
export INTERNAL_IP
|
||||||
|
|
||||||
|
# DotNet environment setup
|
||||||
|
export DOTNET_ROOT=/usr/share/
|
||||||
|
export SUBNAUTICA_INSTALLATION_PATH=/home/container/Subnautica
|
||||||
|
|
||||||
|
# Print versions
|
||||||
|
printf "\033[1m\033[33mcontainer@pelican~ \033[0mdotnet --version\n"
|
||||||
|
dotnet --version
|
||||||
|
|
||||||
|
# Replace Startup Variables
|
||||||
|
MODIFIED_STARTUP=$(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')
|
||||||
|
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
|
||||||
|
|
||||||
|
# Run the Server
|
||||||
|
eval ${MODIFIED_STARTUP}
|
||||||
Reference in New Issue
Block a user