Skip to main content

Docker Deployment

Single Container

docker run -d \
--name plugport \
-p 8080:8080 \
-p 27017:27017 \
-e LOG_LEVEL=info \
-e METRICS_ENABLED=true \
# Uncomment for production (MonadDb storage):
# -e MONADDB_ENDPOINT=https://monaddb-rpc.monad.xyz/v1 \
# -e MONADDB_PRIVATE_KEY=your_64_char_hex_key \
plugport/server:latest

Full Stack (Docker Compose)

The full stack includes the server, dashboard, Prometheus, and Grafana.

cd deploy/docker
docker-compose up -d

Services

ServiceURLCredentials
PlugPort Serverhttp://localhost:8080-
Wire Protocolmongodb://localhost:27017-
Dashboardhttp://localhost:3000-
Prometheushttp://localhost:9090-
Grafanahttp://localhost:3001admin / plugport

docker-compose.yml

services:
plugport-server:
image: plugport/server:latest
ports:
- "8080:8080"
- "27017:27017"
environment:
- METRICS_ENABLED=true
# Uncomment for production:
# - MONADDB_ENDPOINT=https://monaddb-rpc.monad.xyz/v1
# - MONADDB_PRIVATE_KEY=your_64_char_hex_key
healthcheck:
test: wget --spider http://localhost:8080/health
interval: 10s

plugport-dashboard:
image: plugport/dashboard:latest
ports:
- "3000:3000"
environment:
- NEXT_PUBLIC_API_URL=http://plugport-server:8080
depends_on:
plugport-server:
condition: service_healthy

prometheus:
image: prom/prometheus:v2.54.0
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml

grafana:
image: grafana/grafana:11.3.0
ports:
- "3001:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=plugport

Building Images

# Server
docker build -f deploy/docker/Dockerfile -t plugport/server .

# Dashboard
docker build -f deploy/docker/Dockerfile.dashboard -t plugport/dashboard .