version: '3.8' services: expo-android: build: context: . dockerfile: Dockerfile container_name: expo-eas-android-webstorm volumes: - ../../../:/workspace - android_gradle:/root/.gradle - android_sdk:/root/.android # Additional volumes for WebStorm - webstorm_config:/root/.config/JetBrains - webstorm_system:/root/.local/share/JetBrains ports: - "8081:8081" # Metro bundler - "19000:19000" # Expo dev server - "19001:19001" # Expo dev server HTTPS - "19002:19002" # Expo dev server alternate environment: - NODE_ENV=development - ANDROID_HOME=/opt/android-sdk - JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 - GRADLE_USER_HOME=/root/.gradle - EXPO_NO_DOTENV=1 - EXPO_DEBUG=1 # WebStorm specific environment variables - DISPLAY=${DISPLAY:-:0} - XDG_RUNTIME_DIR=/tmp/runtime-root working_dir: /workspace command: sleep infinity privileged: true # Required for Android emulator if needed devices: - /dev/kvm # For Android emulator acceleration # Network configuration for better IDE connectivity networks: - expo-network # Health check for IDE connectivity healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8081"] interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: android_gradle: android_sdk: webstorm_config: webstorm_system: networks: expo-network: driver: bridge