Skip to content

Commit 5668f55

Browse files
Merge pull request #51 from SemperSupra/doc-base-image-decision-4997628729023652350
docs: document base image selection decision
2 parents 0a5c969 + b689d9a commit 5668f55

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

docs/architecture.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22

33
WineBot runs Windows GUI applications inside a Linux container using Wine, Xvfb, and a lightweight window manager. It exposes an HTTP API for programmatic control.
44

5+
## Base Image Selection
6+
7+
Choosing the correct base image is critical for supporting modern versions of Wine while maintaining container best practices. The following options were evaluated:
8+
9+
* **Ubuntu LTS + WineHQ Repository:** While this provides access to the latest Wine versions, Ubuntu images are larger, and relying on third-party repositories introduces build-time failure risks (e.g., repository downtime or GPG key changes).
10+
* **Alpine Linux:** Offers the smallest possible footprint. However, Alpine uses `musl` libc instead of `glibc`. Wine heavily relies on `glibc`, making Alpine highly incompatible and requiring complex, fragile workarounds.
11+
* **Arch Linux:** Provides native, bleeding-edge packages without external repositories. However, rolling releases lack the stability required for predictable CI/CD pipelines and production container runtimes.
12+
* **Debian Stable + WineHQ / Backports:** Provides a rock-solid base, but backports often lag behind the latest Wine releases, and using WineHQ reintroduces third-party dependency risks.
13+
14+
**Final Decision:** WineBot uses a **minimal Debian Trixie (Testing) base** (`debian:trixie-slim`) layered with specific requirements. This approach was chosen because it:
15+
1. **Provides Modern Wine:** Access to recent Wine versions directly from native Debian repositories without third-party repos.
16+
2. **Maintains Minimal Size:** The slim variant keeps the base layer small.
17+
3. **Ensures High Compatibility:** Full `glibc` support ensures standard behavior for Wine and Windows applications.
18+
4. **Is Future-Proof:** Using the upcoming stable release prepares the project for the future without major migrations.
19+
520
## System Layers
621

722
1. **Application Layer (Windows)**

0 commit comments

Comments
 (0)