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;

Reply via email to