-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.dev.yml
More file actions
129 lines (121 loc) · 3.51 KB
/
docker-compose.dev.yml
File metadata and controls
129 lines (121 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Development Docker Compose - optimized for development workflow
# Usage: docker compose -f docker-compose.dev.yml up
services:
# Permission fixer for Fuseki data directories (dev)
fuseki-init-dev:
image: node:22-slim
command: >
bash -c "
mkdir -p /fuseki-base/templates /fuseki-base/logs /fuseki-base/backups /fuseki-base/system_files /fuseki-base/databases /fuseki-base/configuration &&
cp /config/assembler.ttl /fuseki-base/configuration/assembler.ttl &&
cp /config/shiro.ini /fuseki-base/shiro.ini &&
chown -R 9008:9008 /fuseki-base /fuseki &&
chmod -R 755 /fuseki-base /fuseki &&
echo 'Dev permissions fixed for Fuseki directories'
"
volumes:
- fuseki_dev_data:/fuseki
- fuseki_dev_base:/fuseki-base
- ./config/fuseki/assembler.ttl:/config/assembler.ttl:ro
- ./config/fuseki/shiro.ini:/config/shiro.ini:ro
networks:
- semem-dev-network
# Apache Jena Fuseki - SPARQL Database (same as production)
fuseki-dev:
image: secoresearch/fuseki:latest
container_name: semem-fuseki-dev
ports:
- "4050:3030"
volumes:
- fuseki_dev_data:/fuseki
- fuseki_dev_base:/fuseki-base
environment:
- ADMIN_PASSWORD=admin123
- JVM_ARGS=-Xmx1g
depends_on:
fuseki-init-dev:
condition: service_completed_successfully
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3030/$/ping || exit 1"]
interval: 15s
timeout: 5s
retries: 3
start_period: 30s
networks:
- semem-dev-network
# Semem Application - Development Mode
semem-dev:
build:
context: .
dockerfile: Dockerfile
target: runtime
args:
- NODE_ENV=development
container_name: semem-app-dev
ports:
- "4100:4100" # API Server
- "4101:4101" # MCP Server
- "4102:4102" # Workbench UI
- "9229:9229" # Node.js Debug Port
volumes:
# Mount source code for hot reloading in development
- ./src:/app/src:ro
- ./config:/app/config
- ./prompts:/app/prompts:ro
- ./bin:/app/bin:ro
# Development data (ephemeral)
- semem_dev_logs:/app/logs
- semem_dev_data:/app/data
# Development config with Docker service names
- ./config/config.json:/app/config/config.json:ro
env_file:
- .env
environment:
- NODE_ENV=development
- DEBUG=semem:*
- NODE_OPTIONS=--inspect=0.0.0.0:9229 --max-old-space-size=2048
- SPARQL_HOST=fuseki-dev
- SPARQL_PORT=3030
depends_on:
fuseki-dev:
condition: service_healthy
restart: unless-stopped
command: ["npm", "run", "start"]
# Override health check for faster development feedback
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4100/api/health"]
interval: 15s
timeout: 5s
retries: 3
start_period: 30s
networks:
- semem-dev-network
# Development utilities container
dev-tools:
image: node:22-alpine
container_name: semem-dev-tools
working_dir: /app
volumes:
- .:/app
command: ["tail", "-f", "/dev/null"]
networks:
- semem-dev-network
profiles:
- tools
volumes:
fuseki_dev_data:
driver: local
fuseki_dev_base:
driver: local
semem_dev_data:
driver: local
semem_dev_logs:
driver: local
networks:
semem-dev-network:
driver: bridge
name: semem-dev
ipam:
config:
- subnet: 172.23.0.0/16