Skip to content

feat: add multi-stage native and Wine-based Docker containers - #34

Merged
meck-gd merged 1 commit into
GDATAAdvancedAnalytics:masterfrom
doomedraven:feat/docker-containerization
Jul 28, 2026
Merged

feat: add multi-stage native and Wine-based Docker containers#34
meck-gd merged 1 commit into
GDATAAdvancedAnalytics:masterfrom
doomedraven:feat/docker-containerization

Conversation

@doomedraven

Copy link
Copy Markdown

Summary

This PR introduces fully automated, multi-stage Docker containerization for de4dotEx. It enables running de4dotEx seamlessly as a cross-platform command-line utility or microservice under any standard Docker-enabled host.

Key Changes

  1. Strategy A: Native .NET 8.0 Linux Container (Dockerfile):

    • Uses a multi-stage build starting with an Ubuntu stage to compile the native C++ BeaEngine (libBeaEngine.so) disassembler library from source on Linux.
    • Leverages the official .NET 8.0 SDK to publish de4dot natively and packages it into a slim .NET runtime image.
    • Copies the compiled libBeaEngine.so to /usr/local/lib and registers it globally via ldconfig so it is automatically available for ConfuserEx control-flow disassembly.
  2. Strategy B: Wine-compatible .NET Framework 4.8 Container (Dockerfile.wine):

    • Employs a multi-stage Mono SDK (mono:6.12.0) builder stage to natively restore and compile the .NET Framework 4.8 solution (de4dot.netframework.sln) inside the container on Linux—meaning no pre-compilation or Windows host is required!
    • Packages the output into a headless Ubuntu container pre-configured with wine64 and wine packages natively.
    • Pre-downloads the official wine-mono-7.0.0-x86.msi package into Wine's global shared folder /usr/share/wine/mono/ at build-time, which wineboot -u automatically registers during bootstrap. This creates a completely self-contained, offline-compatible Wine .NET Framework prefix.
  3. Optimization and Client Utilities:

    • Includes .dockerignore to restrict local build files and temporary assets from polluting the build context.
    • Integrates comprehensive building, running, and troubleshooting documentation (including explicit Rosetta 2/QEMU --platform linux/amd64 instructions for Apple Silicon Mac hosts) directly into the primary README.md.

@meck-gd

meck-gd commented Jul 28, 2026

Copy link
Copy Markdown

Your branch (and the other open PR too) contains commits from the already merged PR, can you please clean them up?

@doomedraven
doomedraven force-pushed the feat/docker-containerization branch from 303b11f to 0958363 Compare July 28, 2026 09:17
@doomedraven

Copy link
Copy Markdown
Author

cleaned

@meck-gd

meck-gd commented Jul 28, 2026

Copy link
Copy Markdown

Thanks!

@meck-gd
meck-gd merged commit b8f5723 into GDATAAdvancedAnalytics:master Jul 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants