This is an automated email from the ASF dual-hosted git repository.
jiadongb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git
The following commit(s) were added to refs/heads/main by this push:
new e73034d722 fix(deploy): update single-node docker-compose
configuration with latest architecture (#4077)
e73034d722 is described below
commit e73034d72220750bbe52e636765a85229a6dc4fa
Author: Jiadong Bai <[email protected]>
AuthorDate: Fri Dec 5 11:21:49 2025 -0800
fix(deploy): update single-node docker-compose configuration with latest
architecture (#4077)
### What changes were proposed in this PR?
This PR improves the single-node docker-compose configuration with the
following changes:
1. **Added microservices**:
- `config-service` (port 9094): Provides endpoints for configuration
management
- `access-control-service` (port 9096): Handles user permissions and
access control
- `workflow-computing-unit-managing-service` (port 8888): Provides
endpoints for managing computing units
- All services are added with proper health checks and dependencies on
postgres
- Nginx reverse proxy routes are configured for `/api/config` and
`/api/computing-unit`
2. **Removed outdated environment variables** from `.env`:
- `USER_SYS_ENABLED=true`
- `STORAGE_ICEBERG_CATALOG_TYPE=postgres`
3. **Removed unused example data loader**: the example data will be
loaded via other ways, not the container way anymore.
### Any related issues, documentation, discussions?
Closes #4083
### How was this PR tested?
docker-compose tested locally.
### Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (claude-opus-4-5-20250101)
---------
Co-authored-by: Claude <[email protected]>
---
bin/single-node/.env | 11 +----
bin/single-node/docker-compose.yml | 87 ++++++++++++++++++++++----------------
bin/single-node/nginx.conf | 12 ++++++
3 files changed, 64 insertions(+), 46 deletions(-)
diff --git a/bin/single-node/.env b/bin/single-node/.env
index 4b5d1d5836..f7a0d349bf 100644
--- a/bin/single-node/.env
+++ b/bin/single-node/.env
@@ -44,15 +44,6 @@ STORAGE_JDBC_USERNAME=texera
STORAGE_JDBC_PASSWORD=password
FILE_SERVICE_GET_PRESIGNED_URL_ENDPOINT=http://texera-file-service:9092/api/dataset/presign-download
FILE_SERVICE_UPLOAD_ONE_FILE_TO_DATASET_ENDPOINT=http://texera-file-service:9092/api/dataset/did/upload
-USER_SYS_ENABLED=true
-STORAGE_ICEBERG_CATALOG_TYPE=postgres
STORAGE_ICEBERG_CATALOG_POSTGRES_URI_WITHOUT_SCHEME=texera-postgres:5432/texera_iceberg_catalog
STORAGE_ICEBERG_CATALOG_POSTGRES_USERNAME=texera
-STORAGE_ICEBERG_CATALOG_POSTGRES_PASSWORD=password
-
-# variables for example user, datasets and workflows
-TEXERA_EXAMPLE_USERNAME=texera
-TEXERA_EXAMPLE_PASSWORD=texera
-TEXERA_EXAMPLE_IS_PUBLIC=true
-TEXERA_EXAMPLE_DATASET_DIR=/example_data/data
-TEXERA_EXAMPLE_WORKFLOW_DIR=/example_data/workflows
\ No newline at end of file
+STORAGE_ICEBERG_CATALOG_POSTGRES_PASSWORD=password
\ No newline at end of file
diff --git a/bin/single-node/docker-compose.yml
b/bin/single-node/docker-compose.yml
index ce95d64c70..a113b008f6 100644
--- a/bin/single-node/docker-compose.yml
+++ b/bin/single-node/docker-compose.yml
@@ -94,6 +94,54 @@ services:
timeout: 3s
retries: 10
+ # ConfigService provides endpoints for configuration management
+ config-service:
+ image: apache/texera-config-service:latest
+ 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:latest
+ 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:latest
+ 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:latest
@@ -146,42 +194,6 @@ services:
timeout: 3s
retries: 10
- texera-example-data-loader:
- image: apache/texera-example-data-loader:latest
- 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
@@ -191,6 +203,9 @@ services:
- 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:
diff --git a/bin/single-node/nginx.conf b/bin/single-node/nginx.conf
index f703fb027f..4bdf8baf56 100644
--- a/bin/single-node/nginx.conf
+++ b/bin/single-node/nginx.conf
@@ -42,6 +42,18 @@ http {
proxy_set_header X-Real-IP $remote_addr;
}
+ location /api/config {
+ proxy_pass http://texera-config-service:9094;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ }
+
+ location /api/computing-unit {
+ proxy_pass
http://texera-workflow-computing-unit-managing-service:8888;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ }
+
location /api/ {
proxy_pass http://texera-web-application:8080;
proxy_set_header Host $host;