Ctrl K
ComunidadGuías…

docker-compose.yml

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# One-command local stack for JuggleIM.
#
#   docker compose up -d
#
# Then:
#   - IM WebSocket (client SDKs):   ws://127.0.0.1:9003
#   - Server-side API:              http://127.0.0.1:9001
#   - Admin console:                http://127.0.0.1:8090   (admin / 123456)
#
# Create your first app (tenant) once the stack is up:
#   curl -X POST http://127.0.0.1:8090/admingateway/apps/create \
#        --data '{"app_key":"appkey","app_name":"appname"}'
#
# Override the MySQL password by exporting MYSQL_ROOT_PASSWORD before `up`.

services:
  mysql:
    image: mysql:8.0
    container_name: juggleim-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-juggleim}
      MYSQL_DATABASE: jim_db
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_0900_ai_ci
    volumes:
      - mysql-data:/var/lib/mysql
      # Schema is created on first init; auto-migration (Upgrade()) tops it up on startup.
      - ./sql/imserver.sql:/docker-entrypoint-initdb.d/01-schema.sql:ro
      - ./docker/mysql-init/02-connect-address.sql:/docker-entrypoint-initdb.d/02-connect-address.sql:ro
    ports:
      - "${MYSQL_HOST_PORT:-3306}:3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD:-juggleim}"]
      interval: 5s
      timeout: 5s
      retries: 20

  im-server:
    build:
      context: .
      dockerfile: Dockerfile
    image: juggleim/im-server:local
    container_name: juggleim-server
    restart: unless-stopped
    depends_on:
      mysql:
        condition: service_healthy
    environment:
      POD_NAME: jim-node-1
      POD_IP: 127.0.0.1
      MSG_STORE_ENGINE: mysql
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-juggleim}
      MYSQL_ADDR: mysql:3306
      MYSQL_DB_NAME: jim_db
      # Unused in mysql mode, but run.sh (set -e) requires every templated var to be present.
      MONGODB_ADDR: mongo
      MONGODB_ROOT_PASSWORD: unused
      WS_PORT: 9003
      API_HTTP_PORT: 9001
      NAV_HTTP_PORT: 9002
      ADMIN_HTTP_PORT: 8090
    ports:
      - "${WS_HOST_PORT:-9003}:9003"       # WebSocket long connections
      - "${API_HOST_PORT:-9001}:9001"      # Server-side HTTP API
      - "${NAV_HOST_PORT:-9002}:9002"      # Navigator
      - "${ADMIN_HOST_PORT:-8090}:8090"    # Admin console
      - "${PPROF_HOST_PORT:-6060}:6060"    # pprof

volumes:
  mysql-data: