blob: bd2394a8821b588154c3d30b5b3d85a10715e502 [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-0-0
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
- ../../core/scripts/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: texera/file-service:single-node-release-1-0-0
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
# WorkflowCompilingService provides endpoints for sanity check and schema propagation while workflows are being edited
workflow-compiling-service:
image: texera/workflow-compiling-service:single-node-release-1-0-0
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-0-0-R
image: texera/computing-unit-master:single-node-release-1-0-0
container_name: texera-computing-unit-master
restart: always
depends_on:
workflow-compiling-service:
condition: service_started
env_file:
- .env
volumes:
- workflow_result_data:/core/amber/user-resources
# TexeraWebApplication provides endpoints for hub resource management.
texera-web-application:
image: texera/texera-web-application:single-node-release-1-0-0
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:/core/amber/user-resources
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:8080/api/healthcheck"]
interval: 5s
timeout: 3s
retries: 10
texera-example-data-loader:
image: texera/texera-example-data-loader:single-node-release-1-0-0
container_name: texera-example-data-loader
depends_on:
texera-web-application:
condition: service_healthy
environment:
TEXERA_WEB_APPLICATION_URL: http://texera-web-application:8080/api
TEXERA_FILE_SERVICE_URL: http://texera-file-service:9092/api
restart: "no"
texera-access-message:
image: alpine:latest
container_name: texera-access-message
depends_on:
texera-example-data-loader:
condition: service_completed_successfully
env_file:
- .env
command: >
/bin/sh -c "
echo '===============================================';
echo 'Texera is ready!';
echo '===============================================';
echo '';
echo 'To access Texera, open your browser and navigate to:';
echo ' ${TEXERA_HOST}:8080';
echo '';
echo 'The following account has been created for you:';
echo ' Username: texera';
echo ' Password: texera';
echo '';
echo '==============================================='
"
restart: "no"
# 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
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- "8080:8080"
networks:
default:
name: texera-single-node-release-1-0-0
# persistent volumes
volumes:
minio_data:
postgres_data:
workflow_result_data: