Some checks are pending
Build Ghidra Plugin / build (push) Waiting to run
- Rename src/ghydramcp → src/mcghidra - Rename GhydraMCPPlugin.java → MCGhidraPlugin.java - Update all imports, class names, and references - Update pyproject.toml package name and script entry - Update Docker image names and container prefixes - Update environment variables: GHYDRA_* → MCGHIDRA_* - Update all documentation references
117 lines
3.7 KiB
YAML
117 lines
3.7 KiB
YAML
# MCGhidra Docker Compose Configuration
|
|
# Provides both development and production modes for Ghidra + MCGhidra
|
|
#
|
|
# Usage:
|
|
# Development: docker compose up mcghidra-dev
|
|
# Production: docker compose up mcghidra
|
|
#
|
|
# Set MODE in .env file to switch between dev/prod behaviors
|
|
|
|
services:
|
|
# =============================================================================
|
|
# Production Service - Optimized for stability and security
|
|
# =============================================================================
|
|
mcghidra:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile
|
|
args:
|
|
GHIDRA_VERSION: ${GHIDRA_VERSION:-11.4.2}
|
|
GHIDRA_DATE: ${GHIDRA_DATE:-20250826}
|
|
image: mcghidra:${MCGHIDRAMCP_VERSION:-latest}
|
|
container_name: ${COMPOSE_PROJECT_NAME:-mcghidra}-server
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MCGHIDRA_PORT:-8192}:8192"
|
|
volumes:
|
|
# Mount binaries to analyze (read-only in prod)
|
|
- ${BINARIES_PATH:-./binaries}:/binaries:ro
|
|
# Persist Ghidra projects between runs
|
|
- mcghidra-projects:/projects
|
|
environment:
|
|
- MCGHIDRA_MODE=${MCGHIDRA_MODE:-headless}
|
|
- MCGHIDRA_PORT=8192
|
|
- MCGHIDRA_MAXMEM=${MCGHIDRA_MAXMEM:-2G}
|
|
- PROJECT_NAME=${PROJECT_NAME:-MCGhidra}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8192/"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
start_period: 60s
|
|
retries: 3
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: ${MCGHIDRA_MAXMEM:-2G}
|
|
profiles:
|
|
- prod
|
|
- default
|
|
|
|
# =============================================================================
|
|
# Development Service - Hot-reload and debugging friendly
|
|
# =============================================================================
|
|
mcghidra-dev:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile
|
|
args:
|
|
GHIDRA_VERSION: ${GHIDRA_VERSION:-11.4.2}
|
|
GHIDRA_DATE: ${GHIDRA_DATE:-20250826}
|
|
image: mcghidra:dev
|
|
container_name: ${COMPOSE_PROJECT_NAME:-mcghidra}-dev
|
|
ports:
|
|
- "${MCGHIDRA_PORT:-8192}:8192"
|
|
# Additional ports for debugging/multiple instances
|
|
- "8193:8193"
|
|
- "8194:8194"
|
|
volumes:
|
|
# Mount binaries (read-write in dev)
|
|
- ${BINARIES_PATH:-./binaries}:/binaries:rw
|
|
# Persist projects
|
|
- mcghidra-projects-dev:/projects
|
|
# Mount scripts for live editing (development only)
|
|
- ./docker/MCGhidraServer.java:/opt/ghidra/scripts/MCGhidraServer.java:ro
|
|
- ./docker/entrypoint.sh:/entrypoint.sh:ro
|
|
environment:
|
|
- MCGHIDRA_MODE=${MCGHIDRA_MODE:-headless}
|
|
- MCGHIDRA_PORT=8192
|
|
- MCGHIDRA_MAXMEM=${MCGHIDRA_MAXMEM:-4G}
|
|
- PROJECT_NAME=${PROJECT_NAME:-MCGhidra-Dev}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8192/"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
start_period: 120s
|
|
retries: 5
|
|
profiles:
|
|
- dev
|
|
|
|
# =============================================================================
|
|
# Shell Service - Interactive debugging container
|
|
# =============================================================================
|
|
mcghidra-shell:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile
|
|
image: mcghidra:${MCGHIDRAMCP_VERSION:-latest}
|
|
container_name: ${COMPOSE_PROJECT_NAME:-mcghidra}-shell
|
|
stdin_open: true
|
|
tty: true
|
|
volumes:
|
|
- ${BINARIES_PATH:-./binaries}:/binaries:rw
|
|
- mcghidra-projects-dev:/projects
|
|
environment:
|
|
- MCGHIDRA_MODE=shell
|
|
profiles:
|
|
- debug
|
|
|
|
volumes:
|
|
mcghidra-projects:
|
|
name: ${COMPOSE_PROJECT_NAME:-mcghidra}-projects
|
|
mcghidra-projects-dev:
|
|
name: ${COMPOSE_PROJECT_NAME:-mcghidra}-projects-dev
|
|
|
|
networks:
|
|
default:
|
|
name: ${COMPOSE_PROJECT_NAME:-mcghidra}-network
|