Skip to content

tabaqatdev/arcgis-experience-builder-docker

Repository files navigation

ArcGIS Experience Builder - Docker Setup

A Docker setup for running ArcGIS Experience Builder v1.17 using Bun runtime in a single container, following best practices from the community.

Overview

This setup includes:

  • A single Docker container for the complete ArcGIS Experience Builder (client and server components)
  • A docker-compose configuration for easy management
  • Docker native volumes for data persistence
  • Automatic dependency resolution using Bun runtime
  • Built-in fallback handling for the fs-extra module issue

Prerequisites

  • Docker and Docker Compose installed
  • Downloaded and extracted ArcGIS Experience Builder v1.17
  • ArcGIS Portal URL and App ID (register the app in your ArcGIS portal)

Download ArcGIS Experience Builder

ArcGIS Experience Builder requires authentication to download from Esri's website:

  1. Go to ArcGIS Experience Builder Downloads
  2. Log in with your ArcGIS developer account
  3. Download the Experience Builder Developer Edition v1.17
  4. Extract the zip file to a directory named arcgis-experience-builder in this project
# Create the arcgis-experience-builder directory
mkdir -p arcgis-experience-builder

# Extract the zip file you downloaded from Esri (avoids nested directories)
unzip arcgis-experience-builder-1.17.zip

Project Structure

experience-builder/
├── arcgis-experience-builder/  # Extracted Experience Builder files
│   ├── server/               # Mounted to container
│   └── client/               # Mounted to container
├── Dockerfile                # Container definition using Bun runtime
├── start.sh                  # Startup script
└── docker-compose.yml        # Docker Compose definition with native volumes

Quick Start

  1. Create an .env file with your configuration:
EXB_PORT_HTTP=3000
EXB_PORT_HTTPS=3001
PORTAL_URL=https://www.arcgis.com
APP_ID=your_app_id_here
  1. Start the container:
docker compose up -d

How It Works

The container:

  • Uses Bun runtime for improved performance and dependency handling
  • Mounts both the Experience Builder server and client files from your extracted download
  • Automatically installs required dependencies
  • Runs the server component on ports 3000 (HTTP) and 3001 (HTTPS)
  • Uses Docker native volumes for data persistence

Why Bun?

This setup uses Bun instead of Node.js because:

  1. Better dependency resolution - fixes the notorious fs-extra module issue
  2. Faster startup and package installation
  3. Improved compatibility with the Experience Builder codebase
  4. Built-in fallback mechanism for missing modules

Configuration

Environment Variables

Variable Description Default
EXB_PORT_HTTP HTTP port 3000
EXB_PORT_HTTPS HTTPS port 3001
PORTAL_URL ArcGIS Portal URL https://www.arcgis.com
APP_ID Your registered app ID -

Volumes

Mount Point Description
./arcgis-experience-builder/server REQUIRED: Experience Builder server files
./arcgis-experience-builder/client REQUIRED: Experience Builder client files
exb-public-data Server public files (Docker volume)
exb-config-data Server configuration (Docker volume)
exb-logs-data Server logs (Docker volume)

Production Considerations

  • Use a reverse proxy like Nginx or Traefik for SSL termination
  • Docker volumes are used for data persistence, which is better for production environments
  • Monitor container health with the built-in healthcheck
  • Ensure your APP_ID is properly configured in Esri Portal

About

Docker setup for ArcGIS Experience Builder v1.17 using Bun runtime

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published