blob: 470053e8f79052cad51e54897a6f04a1191a6a6b [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: texera-single-node-release-1-1-0-incubating
services:
# Part1: Specification of the storage services used by Texera
# MinIO is an S3-compatible object storage used to store datasets and files.
minio:
image: minio/minio:RELEASE.2025-02-28T09-55-16Z
container_name: texera-minio
ports:
- "9000:9000"
env_file:
- .env
volumes:
- minio_data:/data
command: server --console-address ":9001" /data
# PostgreSQL with PGroonga extension for full-text search.
# Used by lakeFS and Texera's metadata storage.
postgres:
image: groonga/pgroonga:4.0.1-debian-15
container_name: texera-postgres
restart: always
env_file:
- .env
healthcheck:
test: ["CMD", "pg_isready", "-U", "texera", "-d", "texera_db"]
interval: 10s
retries: 5
start_period: 5s
volumes:
- postgres_data:/var/lib/postgresql/data
# mount the sql files for initializing the postgres
- ../../sql:/docker-entrypoint-initdb.d
# lakeFS is the underlying storage of Texera's dataset service
lakefs:
image: treeverse/lakefs:1.51
container_name: texera-lakefs
restart: always
depends_on:
postgres:
condition: service_healthy
minio:
condition: service_started
env_file:
- .env
environment:
# This port also need to be changed if the port of MinIO service is changed
- LAKEFS_BLOCKSTORE_S3_PRE_SIGNED_ENDPOINT=${TEXERA_HOST}:9000
entrypoint: ["/bin/sh", "-c"]
command:
- |
lakefs setup --user-name "$LAKEFS_INSTALLATION_USER_NAME" --access-key-id "$LAKEFS_INSTALLATION_ACCESS_KEY_ID" --secret-access-key "$LAKEFS_INSTALLATION_SECRET_ACCESS_KEY" || true
lakefs run &
wait
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8000/api/v1/healthcheck"]
interval: 10s
timeout: 5s
retries: 10
# Part2: Specification of Texera's micro-services
# FileService provides endpoints for Texera's dataset management
file-service:
image: apache/texera-file-service:1.1.0-incubating
container_name: texera-file-service
restart: always
depends_on:
minio:
condition: service_started
lakefs:
condition: service_healthy
env_file:
- .env
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:9092/api/healthcheck"]
interval: 5s
timeout: 3s
retries: 10
# ConfigService provides endpoints for configuration management
config-service:
image: apache/texera-config-service:1.1.0-incubating
container_name: texera-config-service
restart: always
depends_on:
postgres:
condition: service_healthy
env_file:
- .env
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:9094/api/healthcheck"]
interval: 5s
timeout: 3s
retries: 10
# AccessControlService handles user permissions and access control
access-control-service:
image: apache/texera-access-control-service:1.1.0-incubating
container_name: texera-access-control-service
restart: always
depends_on:
postgres:
condition: service_healthy
env_file:
- .env
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:9096/api/healthcheck"]
interval: 5s
timeout: 3s
retries: 10
# WorkflowComputingUnitManagingService provides endpoints for managing computing units
workflow-computing-unit-managing-service:
image: apache/texera-workflow-computing-unit-managing-service:1.1.0-incubating
container_name: texera-workflow-computing-unit-managing-service
restart: always
depends_on:
postgres:
condition: service_healthy
env_file:
- .env
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:8888/api/healthcheck"]
interval: 5s
timeout: 3s
retries: 10
# WorkflowCompilingService provides endpoints for sanity check and schema propagation while workflows are being edited
workflow-compiling-service:
image: apache/texera-workflow-compiling-service:1.1.0-incubating
container_name: texera-workflow-compiling-service
restart: always
depends_on:
file-service:
condition: service_started
env_file:
- .env
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:9090/api/healthcheck"]
interval: 5s
timeout: 3s
retries: 10
# ComputingUnitMaster provides endpoints for executing workflows and interactions during executions.
computing-unit-master:
# to enable R operators, change the image tag to single-node-release-1-1-0-incubating-R
image: apache/texera-workflow-execution-coordinator:1.1.0-incubating
container_name: texera-computing-unit-master
restart: always
depends_on:
workflow-compiling-service:
condition: service_started
env_file:
- .env
volumes:
- workflow_result_data:/amber/user-resources
# TexeraWebApplication provides endpoints for hub resource management.
texera-web-application:
image: apache/texera-dashboard-service:1.1.0-incubating
container_name: texera-web-application
restart: always
depends_on:
computing-unit-master:
condition: service_started
workflow-compiling-service:
condition: service_healthy
file-service:
condition: service_healthy
env_file:
- .env
volumes:
- workflow_result_data:/amber/user-resources
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:8080/api/healthcheck"]
interval: 5s
timeout: 3s
retries: 10
# Part 3: reverse proxy service for Texera's micro services
nginx:
image: nginx:alpine
container_name: texera-nginx
depends_on:
- workflow-compiling-service
- file-service
- texera-web-application
- computing-unit-master
- config-service
- access-control-service
- workflow-computing-unit-managing-service
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- "8080:8080"
networks:
default:
name: texera-single-node-release-1-1-0-incubating
# persistent volumes
volumes:
minio_data:
postgres_data:
workflow_result_data: