This guide runs OpenIAM in containers using Docker Compose. This method is ideal for development, testing, and demonstration purposes.
# Pull and run the latest OpenIAM image (not recommended for production)
docker run --rm -d \
--name openiam-test \
-p 9080:9080 \
openiam/openiam:4.2.2
mkdir openiam-docker && cd openiam-docker
Create docker-compose.yml:
version: '3.8'
services:
openiam-db:
image: mariadb:10.6
container_name: openiam-db
environment:
MYSQL_ROOT_PASSWORD: openiam_root_password
MYSQL_DATABASE: openiam
MYSQL_USER: openiam_user
MYSQL_PASSWORD: openiam_password
volumes:
- openiam_db_data:/var/lib/mysql
- ./db-init:/docker-entrypoint-initdb.d
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
openiam-redis:
image: redis:7-alpine
container_name: openiam-redis
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
timeout: 3s
retries: 5
openiam-rabbitmq:
image: rabbitmq:3.12-management
container_name: openiam-rabbitmq
environment:
RABBITMQ_DEFAULT_USER: openiam
RABBITMQ_DEFAULT_PASS: openiam_password
restart: unless-stopped
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
timeout: 10s
retries: 5
openiam-elasticsearch:
image: elasticsearch:7.17.16
container_name: openiam-elasticsearch
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- xpack.security.enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- openiam_es_data:/usr/share/elasticsearch/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]
interval: 30s
timeout: 10s
retries: 5
openiam:
image: openiam/openiam:4.2.2
container_name: openiam
depends_on:
openiam-db:
condition: service_healthy
openiam-redis:
condition: service_started
openiam-rabbitmq:
condition: service_healthy
openiam-elasticsearch:
condition: service_healthy
ports:
- "9080:9080"
environment:
DB_HOST: openiam-db
DB_NAME: openiam
DB_USER: openiam_user
DB_PASSWORD: openiam_password
REDIS_HOST: openiam-redis
RABBITMQ_HOST: openiam-rabbitmq
RABBITMQ_USER: openiam
RABBITMQ_PASSWORD: openiam_password
ELASTICSEARCH_HOST: openiam-elasticsearch
volumes:
- ./config:/opt/openiam/config
- ./logs:/opt/openiam/logs
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9080/openiam-esb/actuator/health"]
interval: 30s
timeout: 10s
retries: 5
volumes:
openiam_db_data:
openiam_es_data:
# Start all services in detached mode
docker-compose up -d
# Monitor startup progress
docker-compose logs -f
# Or view specific service logs
docker-compose logs -f openiam
DB_HOST: Database hostname (default: openiam-db)DB_NAME: Database name (default: openiam)DB_USER: Database usernameDB_PASSWORD: Database passwordREDIS_HOST: Redis hostnameRABBITMQ_HOST: RabbitMQ hostnameRABBITMQ_USER: RabbitMQ usernameRABBITMQ_PASSWORD: RabbitMQ passwordELASTICSEARCH_HOST: Elasticsearch hostname# Start services
docker-compose up -d
# Stop services
docker-compose down
# Restart specific service
docker-compose restart openiam
# View logs
docker-compose logs openiam
docker-compose logs -f openiam # Follow logs
# Create database backup
docker-compose exec openiam-db mysqldump -u openiam_user -p openiam > backup.sql
# Restore database backup
docker-compose exec -T openiam-db mysql -u openiam_user -p openiam < backup.sql
# Check service health
docker-compose ps
docker-compose exec openiam curl http://localhost:9080/openiam-esb/actuator/health
Deploying OpenIAM in containers for production? Our consulting covers:
Get expert help: office@linux-server-admin.com | Contact Page