services: spark-master: container_name: spark-master build: . image: spark-image entrypoint: ['./entrypoint.sh', 'master'] healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8080" ] interval: 5s timeout: 3s retries: 3 volumes: - ./scripts:/opt/spark/scripts - ./data:/opt/spark/data - ./spark-logs:/opt/spark/spark-events - ./warehouse:/opt/spark/warehouse env_file: - .env.spark ports: - '8080:8080' # Spark master Web UI - '7077:7077' # For spark-node-to-spark-node queries - '4040:4040' # Spark worker data - '8889:8889' # Optionaly - Jupyter web UI spark-history-server: container_name: spark-history image: spark-image entrypoint: ['./entrypoint.sh', 'history'] depends_on: - spark-master env_file: - .env.spark volumes: - ./scripts:/opt/spark/scripts - ./data:/opt/spark/data - ./spark-logs:/opt/spark/spark-events - ./warehouse:/opt/spark/warehouse ports: - '18080:18080' spark-worker: container_name: spark-worker image: spark-image entrypoint: ['./entrypoint.sh', 'worker'] depends_on: - spark-master env_file: - .env.spark volumes: - ./scripts:/opt/spark/scripts - ./data:/opt/spark/data - ./spark-logs:/opt/spark/spark-events - ./warehouse:/opt/spark/warehouse volumes: spark-logs: