From 1507c7953d8f28fd37f382188849c087a85bf06d Mon Sep 17 00:00:00 2001 From: KAYI0019 Date: Tue, 19 Aug 2025 01:20:32 +0900 Subject: [PATCH 1/5] chore: update docker-compose and application-docker.yml - remove initialization SQL path - update OLLAMA environment variables - add new Admin UI service - change JPA settings - add Flyway and Elasticsearch configurations - update Ollama and Unstructured API settings --- .../src/main/resources/application-docker.yml | 51 ++++++++++++++----- docker-compose.yml | 31 ++++++----- 2 files changed, 57 insertions(+), 25 deletions(-) diff --git a/core/src/main/resources/application-docker.yml b/core/src/main/resources/application-docker.yml index b4ac42f..c9d8700 100644 --- a/core/src/main/resources/application-docker.yml +++ b/core/src/main/resources/application-docker.yml @@ -15,27 +15,58 @@ spring: # JPA Configuration jpa: hibernate: - ddl-auto: create-drop + ddl-auto: validate show-sql: true properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect format_sql: true + # Flyway Configuration (Docker) + flyway: + baseline-on-migrate: true + locations: classpath:db/migration + validate-on-migrate: true + # Servlet Configuration servlet: multipart: max-file-size: 100MB max-request-size: 100MB +# Application-specific Configuration (Docker) +app: # Elasticsearch Configuration (Docker) elasticsearch: - uris: http://elasticsearch:9200 - -# Ollama Configuration (Docker) -ollama: - base-url: http://ollama:11434 - model: dengcao/Qwen3-Embedding-0.6B:F16 + url: http://elasticsearch:9200 + index: document_chunks_index + + # Ollama Configuration (Docker) + ollama: + api: + url: http://ollama:11434 + embedding: + model: dengcao/Qwen3-Embedding-0.6B:F16 + + # Embedding Configuration + embedding: + batch-size: 10 + + # Search Configuration + search: + snippet-max-length: 50 + bm25-weight: 0.3 + vector-weight: 0.7 + + # Content Configuration + content: + default-max-tokens: 25000 + tokenizer: tiktoken-cl100k_base + + # Unstructured API Configuration + unstructured: + api: + url: http://unstructured-api:8000 # MinIO Configuration (Docker) minio: @@ -44,11 +75,7 @@ minio: secret-key: minioadmin123! bucket-name: opencontext-documents -# Unstructured.io Configuration (Docker) -app: - unstructured: - api: - url: http://unstructured-api:8000 + # Application Configuration opencontext: diff --git a/docker-compose.yml b/docker-compose.yml index 509899c..94b8b1d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,7 +12,6 @@ services: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - - ./init/init.sql:/docker-entrypoint-initdb.d/init.sql networks: - opencontext-network healthcheck: @@ -74,10 +73,10 @@ services: - opencontext-network environment: - OLLAMA_HOST=0.0.0.0 - # - OLLAMA_GPU_OVERHEAD=0 - # - OLLAMA_NUM_PARALLEL=1 + - OLLAMA_NUM_PARALLEL=1 depends_on: - ollama-init + runtime: nvidia restart: unless-stopped # Kibana for Elasticsearch management @@ -123,7 +122,7 @@ services: ports: - "8000:8000" environment: - - UNSTRUCTURED_MEMORY_FREE_MINIMUM_MB=512 + - UNSTRUCTURED_MEMORY_FREE_MINIMUM_MB=512 networks: - opencontext-network restart: unless-stopped @@ -139,15 +138,6 @@ services: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=docker - - SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/opencontext - - SPRING_DATASOURCE_USERNAME=user - - SPRING_DATASOURCE_PASSWORD=password - - ELASTICSEARCH_URL=http://elasticsearch:9200 - - OLLAMA_BASE_URL=http://ollama:11434 - - UNSTRUCTURED_API_URL=http://unstructured-api:8000 - - MINIO_URL=http://minio:9000 - - MINIO_ACCESS_KEY=minioadmin - - MINIO_SECRET_KEY=minioadmin123! depends_on: postgres: condition: service_healthy @@ -201,6 +191,21 @@ services: command: ["node", "dist/index.js", "--transport", "http", "--port", "3000"] restart: unless-stopped + # Admin UI Frontend + open-context-admin-ui: + build: + context: ./admin-ui + dockerfile: Dockerfile + image: opencontext/admin-ui:0.1.0 + container_name: open-context-admin-ui + ports: + - "3001:80" + depends_on: + - open-context-core + networks: + - opencontext-network + restart: unless-stopped + volumes: postgres_data: es_data: From ad3615ba9f9c8aece07bff59fa57c97d7087b8b7 Mon Sep 17 00:00:00 2001 From: KAYI0019 Date: Tue, 19 Aug 2025 01:23:04 +0900 Subject: [PATCH 2/5] feat: add Dockerfile and .dockerignore - Create multi-stage Dockerfile for admin UI - Add .dockerignore to exclude unnecessary files --- admin-ui/.dockerignore | 14 ++++++++++++++ admin-ui/Dockerfile | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 admin-ui/.dockerignore create mode 100644 admin-ui/Dockerfile diff --git a/admin-ui/.dockerignore b/admin-ui/.dockerignore new file mode 100644 index 0000000..b26ac10 --- /dev/null +++ b/admin-ui/.dockerignore @@ -0,0 +1,14 @@ +node_modules +npm-debug.log +.git +.gitignore +.env +.env.local +.env.development.local +.env.test.local +.env.production.local +dist +coverage +.nyc_output +.DS_Store +*.log diff --git a/admin-ui/Dockerfile b/admin-ui/Dockerfile new file mode 100644 index 0000000..5fb9a2d --- /dev/null +++ b/admin-ui/Dockerfile @@ -0,0 +1,34 @@ +# Build stage +FROM node:18-alpine AS builder + +WORKDIR /app + +# Copy package files +COPY package*.json ./ + +# Install dependencies +RUN npm ci + +# Copy source code +COPY . . + +# Build the application +RUN npx vite build + +# Production stage +FROM node:18-alpine + +# Install serve globally +RUN npm install -g serve + +# Copy built files from builder stage +COPY --from=builder /app/dist /app/dist + +# Set working directory +WORKDIR /app + +# Expose port 80 +EXPOSE 80 + +# Start serve with SPA support +CMD ["serve", "-s", "dist", "-l", "80", "--single"] From 3e18faba02dd166078774e14c835c824274e1b70 Mon Sep 17 00:00:00 2001 From: KAYI0019 Date: Tue, 19 Aug 2025 01:24:47 +0900 Subject: [PATCH 3/5] feat: allow all origins and methods - Enable CORS for all paths - Allow all HTTP methods --- core/src/main/java/com/opencontext/config/WebConfig.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/opencontext/config/WebConfig.java b/core/src/main/java/com/opencontext/config/WebConfig.java index cf6f946..6e3468d 100644 --- a/core/src/main/java/com/opencontext/config/WebConfig.java +++ b/core/src/main/java/com/opencontext/config/WebConfig.java @@ -27,9 +27,9 @@ public RestTemplate restTemplate() { @Override public void addCorsMappings(CorsRegistry registry) { - registry.addMapping("/api/**") - .allowedOriginPatterns("*") // Allow all origins in development environment - .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS","PATCH") + registry.addMapping("/**") + .allowedOriginPatterns("*") + .allowedMethods("*") .allowedHeaders("*") .allowCredentials(true) .maxAge(3600); From 6438a827e1b72a769e056b9c18ac296605c0761d Mon Sep 17 00:00:00 2001 From: KAYI0019 Date: Tue, 19 Aug 2025 01:26:31 +0900 Subject: [PATCH 4/5] chore: remove Docker-specific settings from application.yml - Remove Docker profile and related configurations for database, Elasticsearch, Ollama, MinIO, and Unstructured.io --- core/src/main/resources/application.yml | 38 ------------------------- 1 file changed, 38 deletions(-) diff --git a/core/src/main/resources/application.yml b/core/src/main/resources/application.yml index 7d01e90..ba47637 100644 --- a/core/src/main/resources/application.yml +++ b/core/src/main/resources/application.yml @@ -98,41 +98,3 @@ logging: server: port: 8080 - ---- -# Docker Profile Configuration -spring: - config: - activate: - on-profile: docker - - # Database Configuration (Docker) - datasource: - url: jdbc:postgresql://postgres:5432/opencontext - username: user - password: password - -# Application-specific Configuration (Docker) -app: - # Elasticsearch Configuration (Docker) - elasticsearch: - url: http://elasticsearch:9200 - index: document_chunks_index - - # Ollama Configuration (Docker) - ollama: - api: - url: http://ollama:11434 - embedding: - model: dengcao/Qwen3-Embedding-0.6B:F16 - -# MinIO Configuration (Docker) -minio: - endpoint: http://minio:9000 - access-key: minioadmin - secret-key: minioadmin123! - bucket-name: opencontext-documents - -# Unstructured.io Configuration (Docker) -unstructured: - base-url: http://unstructured-api:8000 From 1b4142b926e4c6ccf4db43254070f91cab4b2c1c Mon Sep 17 00:00:00 2001 From: kAYI0019 <163094361+kAYI0019@users.noreply.github.com> Date: Tue, 19 Aug 2025 02:00:50 +0900 Subject: [PATCH 5/5] Update docker-compose.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docker-compose.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 94b8b1d..c416fb1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -76,7 +76,9 @@ services: - OLLAMA_NUM_PARALLEL=1 depends_on: - ollama-init - runtime: nvidia + # To enable GPU support, set OLLAMA_RUNTIME=nvidia in your environment. + # If you do not have an NVIDIA GPU, leave OLLAMA_RUNTIME unset. + runtime: ${OLLAMA_RUNTIME:-} restart: unless-stopped # Kibana for Elasticsearch management