Skip to main content

Container Deployment Guide

This guide covers running MAPS Messaging via Docker Compose. For image build details, see the Dockerfile in the repository.

Quick Start (Docker Compose)​

version: "3.8"
services:
maps-messaging:
image: mapsmessaging/maps-messaging:4.0.1 # pin a release tag (avoid :latest in prod)
container_name: maps-messaging
restart: unless-stopped
ports:
- "1883:1883" # MQTT
- "5672:5672" # AMQP
- "8080:8080" # HTTP API
volumes:
- ./config:/opt/maps/config
- ./schemas:/opt/maps/schemas
- ./data:/data
environment:
- CONSUL_HOST=consul
- SCHEMA_VALIDATION=true
healthcheck:
# Consider checking body for OK|Warning if you want 'unhealthy' only on Error
test: ["CMD", "wget", "-qO-", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 5

Snapshot builds: use a snapshot tag, e.g. mapsmessaging/maps-messaging:4.1.0-SNAPSHOT.

Tip: You may also parameterize the tag via an environment file (e.g., {MAPS_VERSION} in a .env).

Image & Tags​

Recommended published tags:

  • Stable: 4.0.1
  • Snapshots: 4.1.0-SNAPSHOT (and similar)

Tip: Always pin a specific tag in production to ensure repeatable deploys.

Ports, Volumes, Environment​

  • Ports

    • 1883 – MQTT

    • 1884 – MQTT-SN (1.2)

    • 2442 – MQTT-SN (2.0)

    • 4222 – NATS

    • 5672 – AMQP

    • 5683 – CoAP

    • 8080 – REST API (health, admin endpoints)

    • 8778 – Jolokia (if enabled)

    • 9000 – All protocols enabled by the license

    Expose only the ports you actually need.

  • Volumes

    • /opt/maps/config – configuration files
    • /opt/maps/schemas – schema definitions
    • /data – persistent runtime data
  • Environment variables (examples)

    • CONSUL_HOST – hostname/IP of Consul (if used)
    • SCHEMA_VALIDATION – enable/disable schema validation (true/false)

See the server configuration docs for the full list of supported environment variables and config files.

Upgrades & Rollback​

Upgrade in place:

docker compose pull
docker compose up -d

Rollback quickly by switching the tag in your Compose file (or .env) to the previous known-good version, then:

docker compose up -d

Build From Source (Optional)​

Most users should use the published images. If you need to build locally:

docker build -t mapsmessaging/maps-messaging:dev -f Dockerfile .