Skip to content

Commit 22c3123

Browse files
committed
Merge branch 'experiment/v0.4.0'
2 parents 69f51f1 + e6eb899 commit 22c3123

File tree

1,102 files changed

+3323
-802
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,102 files changed

+3323
-802
lines changed

.github/copilot-new-service.md

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ This repository is a [very large modular Docker Compose project](../docs/6.-Harb
99
## What is a service?
1010

1111
In this repository, a service is a:
12-
- piece of dedicated compose config, in a `compose.<service>.yml` file
12+
- piece of dedicated compose config, in a `services/compose.<service>.yml` file
1313
- It may include multiple docker compose services, representing a single software project
14-
- a folder `<service>` that contains:
14+
- a folder `services/<service>` that contains:
1515
- any configuration files needed for the service to run
1616
- any volume mounts needed for the service to run
1717
- a Dockerfile if the service needs one
@@ -58,8 +58,8 @@ Follow these steps in order to add a new service. Each step includes validation
5858

5959
**Validation:**
6060
```bash
61-
# Check if handle exists
62-
ls compose.${handle}.yml 2>/dev/null && echo "Handle exists!" || echo "Handle available"
61+
# Check if handle exists (now in services/ directory)
62+
ls services/compose.${handle}.yml 2>/dev/null && echo "Handle exists!" || echo "Handle available"
6363
grep -q "^ ${handle}:" app/src/serviceMetadata.ts && echo "Handle in metadata!" || echo "Metadata available"
6464
```
6565

@@ -71,8 +71,8 @@ deno run -A ./.scripts/scaffold.ts ${handle}
7171
```
7272

7373
**Generated files:**
74-
- `compose.${handle}.yml` - Basic compose structure
75-
- `${handle}/override.env` - Service-specific environment file
74+
- `services/compose.${handle}.yml` - Basic compose structure
75+
- `services/${handle}/override.env` - Service-specific environment file
7676

7777
**Validation:**
7878
- Both files should exist and have basic content
@@ -87,20 +87,21 @@ services:
8787
image: ${HARBOR_${HANDLE}_IMAGE}:${HARBOR_${HANDLE}_VERSION}
8888
env_file:
8989
- ./.env
90-
- ./${handle}/override.env
90+
- ./services/${handle}/override.env
9191
networks:
9292
- harbor-network
9393
# Add ports, volumes, healthcheck as needed
9494
```
9595

9696
**Key requirements:**
9797
- Container name must use `${HARBOR_CONTAINER_PREFIX}.${handle}` format
98-
- Must include both `.env` and service override env file
98+
- Must include both `.env` (at root) and service override env file (in `services/${handle}/`)
9999
- Must use harbor-network
100100
- Environment variables must follow `HARBOR_${HANDLE}_*` pattern
101101
- If service exposes ports, use `${HARBOR_${HANDLE}_HOST_PORT}:${internal_port}` format
102102
- Main container in the compose file MUST match the service handle
103103
- You must not set `restart` policy in the compose file, automatic restart is not expected and considered an error
104+
- All volume mounts to service directories must use `./services/${handle}/...` path
104105

105106
### Step 4: Add Environment Variables to profiles/default.env
106107

@@ -213,23 +214,23 @@ Describe any persistent data or configuration mounts.
213214
### Step 8: Add to .gitignore (if needed)
214215

215216
**Add persistent data directories:**
216-
- Create `.gitignore` in a service folder
217+
- Create `.gitignore` in a service folder (inside `services/${handle}/`)
217218

218219
```bash
219-
# Add to .gitignore if service creates persistent data
220-
echo "data/" >> .gitignore
221-
echo "cache/" >> .gitignore
222-
echo "logs/" >> .gitignore
220+
# Add to services/${handle}/.gitignore if service creates persistent data
221+
echo "data/" >> services/${handle}/.gitignore
222+
echo "cache/" >> services/${handle}/.gitignore
223+
echo "logs/" >> services/${handle}/.gitignore
223224
```
224225

225226
### Step 10: Cross-Service Integration (Optional)
226227

227228
**If service needs integration with other services:**
228229

229-
Create cross-service files following pattern:
230-
- `compose.x.${handle}.${other_service}.yml` - Integration with specific service
231-
- `compose.x.${handle}.nvidia.yml` - GPU support
232-
- `compose.x.traefik.${handle}.yml` - Reverse proxy integration
230+
Create cross-service files in `services/` following pattern:
231+
- `services/compose.x.${handle}.${other_service}.yml` - Integration with specific service
232+
- `services/compose.x.${handle}.nvidia.yml` - GPU support
233+
- `services/compose.x.traefik.${handle}.yml` - Reverse proxy integration
233234

234235
#### Ollama Integration Pattern
235236

.gitignore

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# Node
88
node_modules/
99

10-
# Open WebUI
10+
# Open WebUI (old)
1111
open-webui/*
1212
open-webui/config.json
1313

@@ -16,6 +16,24 @@ open-webui/config.json
1616
!open-webui/start_webui.sh
1717
!open-webui/override.env
1818

19+
# Open WebUI (new, in services)
20+
services/webui/*
21+
services/webui/config.json
22+
23+
!services/webui/configs/
24+
!services/webui/extras/
25+
!services/webui/start_webui.sh
26+
!services/webui/override.env
27+
28+
# Open WebUI (new, in root)
29+
webui/*
30+
webui/config.json
31+
32+
!webui/configs/
33+
!webui/extras/
34+
!webui/start_webui.sh
35+
!webui/override.env
36+
1937
# Ollama
2038
/ollama/ollama/
2139

@@ -107,6 +125,9 @@ qdrant/storage
107125
# Merged compose
108126
__harbor.yml
109127

128+
# Migration backups
129+
.migration-backup-*
130+
110131
.cache
111132
.local
112133
.npm

0 commit comments

Comments
 (0)