mirror of
https://github.com/samanhappy/mcphub.git
synced 2025-12-24 02:39:19 -05:00
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: samanhappy <2755122+samanhappy@users.noreply.github.com> Co-authored-by: samanhappy <samanhappy@gmail.com>
125 lines
3.4 KiB
Markdown
125 lines
3.4 KiB
Markdown
# Docker Engine Installation Test Procedure
|
|
|
|
This document describes how to test the Docker Engine installation feature added with the `INSTALL_EXT=true` build argument.
|
|
|
|
## Test 1: Build with INSTALL_EXT=false (default)
|
|
|
|
```bash
|
|
# Build without extended features
|
|
docker build -t mcphub:base .
|
|
|
|
# Run the container
|
|
docker run --rm mcphub:base docker --version
|
|
```
|
|
|
|
**Expected Result**: `docker: not found` error (Docker is NOT installed)
|
|
|
|
## Test 2: Build with INSTALL_EXT=true
|
|
|
|
```bash
|
|
# Build with extended features
|
|
docker build --build-arg INSTALL_EXT=true -t mcphub:extended .
|
|
|
|
# Test Docker CLI is available
|
|
docker run --rm mcphub:extended docker --version
|
|
```
|
|
|
|
**Expected Result**: Docker version output (e.g., `Docker version 27.x.x, build xxxxx`)
|
|
|
|
## Test 3: Docker-in-Docker with Auto-start Daemon
|
|
|
|
```bash
|
|
# Build with extended features
|
|
docker build --build-arg INSTALL_EXT=true -t mcphub:extended .
|
|
|
|
# Run with privileged mode (allows Docker daemon to start)
|
|
docker run -d \
|
|
--name mcphub-test \
|
|
--privileged \
|
|
-p 3000:3000 \
|
|
mcphub:extended
|
|
|
|
# Wait a few seconds for daemon to start
|
|
sleep 5
|
|
|
|
# Test Docker commands from inside the container
|
|
docker exec mcphub-test docker ps
|
|
docker exec mcphub-test docker images
|
|
docker exec mcphub-test docker info
|
|
|
|
# Cleanup
|
|
docker stop mcphub-test
|
|
docker rm mcphub-test
|
|
```
|
|
|
|
**Expected Result**:
|
|
- Docker daemon should auto-start inside the container
|
|
- Docker commands should work without mounting the host's Docker socket
|
|
- `docker info` should show the container's own Docker daemon
|
|
|
|
## Test 4: Docker-in-Docker with Host Socket (Alternative)
|
|
|
|
```bash
|
|
# Build with extended features
|
|
docker build --build-arg INSTALL_EXT=true -t mcphub:extended .
|
|
|
|
# Run with Docker socket mounted (uses host's daemon)
|
|
docker run -d \
|
|
--name mcphub-test \
|
|
-p 3000:3000 \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
mcphub:extended
|
|
|
|
# Test Docker commands from inside the container
|
|
docker exec mcphub-test docker ps
|
|
docker exec mcphub-test docker images
|
|
|
|
# Cleanup
|
|
docker stop mcphub-test
|
|
docker rm mcphub-test
|
|
```
|
|
|
|
**Expected Result**:
|
|
- Docker daemon should NOT auto-start (socket already exists from host)
|
|
- Docker commands should work and show the host's containers and images
|
|
|
|
## Test 5: Verify Image Size
|
|
|
|
```bash
|
|
# Build both versions
|
|
docker build -t mcphub:base .
|
|
docker build --build-arg INSTALL_EXT=true -t mcphub:extended .
|
|
|
|
# Compare image sizes
|
|
docker images mcphub:*
|
|
```
|
|
|
|
**Expected Result**:
|
|
- The `extended` image should be larger than the `base` image
|
|
- The size difference should be reasonable (Docker Engine adds ~100-150MB)
|
|
|
|
## Test 6: Architecture Support
|
|
|
|
```bash
|
|
# On AMD64/x86_64
|
|
docker build --build-arg INSTALL_EXT=true --platform linux/amd64 -t mcphub:extended-amd64 .
|
|
|
|
# On ARM64
|
|
docker build --build-arg INSTALL_EXT=true --platform linux/arm64 -t mcphub:extended-arm64 .
|
|
```
|
|
|
|
**Expected Result**:
|
|
- Both builds should succeed
|
|
- AMD64 includes Chrome/Playwright + Docker Engine
|
|
- ARM64 includes Docker Engine only (Chrome installation is skipped)
|
|
|
|
## Notes
|
|
|
|
- The Docker Engine installation follows the official Docker documentation
|
|
- Includes full Docker daemon (`dockerd`), CLI (`docker`), and containerd
|
|
- The daemon auto-starts when running in privileged mode
|
|
- The installation uses the Debian Bookworm repository
|
|
- All temporary files are cleaned up to minimize image size
|
|
- The feature is opt-in via the `INSTALL_EXT` build argument
|
|
- `iptables` is installed as it's required for Docker networking
|