TheQuantEd commited on
Commit
cd1a891
Β·
1 Parent(s): bf49c73

Fix Neo4j auth: use NEO4J_AUTH env var (Neo4j 5.x standard), remove broken cypher-shell bootstrap

Browse files
Dockerfile CHANGED
@@ -113,6 +113,8 @@ ENV NEO4J_URI=bolt://127.0.0.1:7687
113
  ENV NEO4J_USERNAME=neo4j
114
  ENV NEO4J_PASSWORD=clinicalmatch2024
115
  ENV NEO4J_DATABASE=neo4j
 
 
116
 
117
  # LLM β€” OpenAI-compatible (set real values via HF Spaces secrets)
118
  ENV OPENAI_API_KEY=""
 
113
  ENV NEO4J_USERNAME=neo4j
114
  ENV NEO4J_PASSWORD=clinicalmatch2024
115
  ENV NEO4J_DATABASE=neo4j
116
+ # NEO4J_AUTH tells Neo4j 5.x to set this password on first boot (format: user/pass)
117
+ ENV NEO4J_AUTH=neo4j/clinicalmatch2024
118
 
119
  # LLM β€” OpenAI-compatible (set real values via HF Spaces secrets)
120
  ENV OPENAI_API_KEY=""
docker/Dockerfile CHANGED
@@ -113,6 +113,8 @@ ENV NEO4J_URI=bolt://127.0.0.1:7687
113
  ENV NEO4J_USERNAME=neo4j
114
  ENV NEO4J_PASSWORD=clinicalmatch2024
115
  ENV NEO4J_DATABASE=neo4j
 
 
116
 
117
  # LLM β€” OpenAI-compatible (set real values via HF Spaces secrets)
118
  ENV OPENAI_API_KEY=""
 
113
  ENV NEO4J_USERNAME=neo4j
114
  ENV NEO4J_PASSWORD=clinicalmatch2024
115
  ENV NEO4J_DATABASE=neo4j
116
+ # NEO4J_AUTH tells Neo4j 5.x to set this password on first boot (format: user/pass)
117
+ ENV NEO4J_AUTH=neo4j/clinicalmatch2024
118
 
119
  # LLM β€” OpenAI-compatible (set real values via HF Spaces secrets)
120
  ENV OPENAI_API_KEY=""
docker/entrypoint.sh CHANGED
@@ -4,9 +4,9 @@ set -e
4
  log() { echo "[entrypoint] $*"; }
5
 
6
  # ── Persistent data dirs (HF Spaces mounts /data) ─────────────────────────────
7
- mkdir -p /data/neo4j/data /data/neo4j/logs /data/neo4j/plugins
8
 
9
- # Symlink Neo4j data dir to persistent volume
10
  if [ ! -L /opt/neo4j/data ]; then
11
  rm -rf /opt/neo4j/data
12
  ln -sf /data/neo4j/data /opt/neo4j/data
@@ -16,48 +16,9 @@ if [ ! -L /opt/neo4j/logs ]; then
16
  ln -sf /data/neo4j/logs /opt/neo4j/logs
17
  fi
18
 
19
- # ── Neo4j password bootstrap (first-boot only) ────────────────────────────────
20
- NEO4J_PASS="${NEO4J_PASSWORD:-clinicalmatch2024}"
21
-
22
- if [ ! -f /data/.neo4j_ready ]; then
23
- log "First boot β€” initialising Neo4j password..."
24
- # Start Neo4j with default password, change it, stop cleanly
25
- /opt/neo4j/bin/neo4j start
26
- log "Waiting for Neo4j to accept connections..."
27
- for i in $(seq 1 30); do
28
- if /opt/neo4j/bin/cypher-shell -u neo4j -p neo4j \
29
- "RETURN 1;" >/dev/null 2>&1; then
30
- break
31
- fi
32
- sleep 2
33
- done
34
- /opt/neo4j/bin/cypher-shell -u neo4j -p neo4j \
35
- "ALTER CURRENT USER SET PASSWORD FROM 'neo4j' TO '$NEO4J_PASS';" 2>/dev/null || true
36
- /opt/neo4j/bin/neo4j stop
37
- sleep 3
38
-
39
- # Run schema + sample data seeding
40
- log "Seeding schema and sample data..."
41
- cd /app/backend
42
- NEO4J_URI=bolt://127.0.0.1:7687 \
43
- NEO4J_USERNAME=neo4j \
44
- NEO4J_PASSWORD="$NEO4J_PASS" \
45
- python3 -c "
46
- from neo4j_setup import setup_schema
47
- from data_ingestion import ingest_sample_data
48
- setup_schema()
49
- ingest_sample_data()
50
- print('Schema and sample data ready.')
51
- " 2>/dev/null || log "Seeding deferred β€” Neo4j not yet ready (will retry via /setup endpoint)"
52
-
53
- touch /data/.neo4j_ready
54
- log "Neo4j initialisation complete."
55
- fi
56
-
57
- # ── Nginx tmp dirs (runs as non-root) ─────────────────────────────────────────
58
- mkdir -p /tmp/nginx-cache /tmp/nginx-body
59
 
60
  log "Starting all services via supervisord..."
61
- # nginx needs its tmp dirs writable
62
- mkdir -p /tmp/nginx-cache /tmp/nginx-body /tmp/nginx-run
63
  exec /usr/bin/supervisord -c /app/docker/supervisord.conf
 
4
  log() { echo "[entrypoint] $*"; }
5
 
6
  # ── Persistent data dirs (HF Spaces mounts /data) ─────────────────────────────
7
+ mkdir -p /data/neo4j/data /data/neo4j/logs /data/neo4j/plugins /tmp/nginx-cache /tmp/nginx-body /tmp/nginx-run
8
 
9
+ # Symlink Neo4j dirs to persistent volume
10
  if [ ! -L /opt/neo4j/data ]; then
11
  rm -rf /opt/neo4j/data
12
  ln -sf /data/neo4j/data /opt/neo4j/data
 
16
  ln -sf /data/neo4j/logs /opt/neo4j/logs
17
  fi
18
 
19
+ # Neo4j 5.x reads NEO4J_AUTH=neo4j/<password> on first boot to set credentials.
20
+ # No manual cypher-shell bootstrap needed.
21
+ export NEO4J_AUTH="neo4j/clinicalmatch2024"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
  log "Starting all services via supervisord..."
 
 
24
  exec /usr/bin/supervisord -c /app/docker/supervisord.conf
docker/supervisord.conf CHANGED
@@ -16,25 +16,27 @@ serverurl=unix:///tmp/supervisor.sock
16
  # ── Neo4j Community ────────────────────────────────────────────────────────────
17
  [program:neo4j]
18
  command=/opt/neo4j/bin/neo4j console
19
- environment=NEO4J_HOME=/opt/neo4j,JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
 
 
 
20
  autostart=true
21
  autorestart=true
22
  startsecs=45
23
  startretries=3
24
  stdout_logfile=/tmp/neo4j.log
25
- stderr_logfile=/tmp/neo4j.log
26
  redirect_stderr=true
27
  priority=10
28
 
29
- # ── FastAPI backend (starts after Neo4j is ready via retry logic in neo4j_setup.py) ──
30
  [program:backend]
31
- command=bash -c "sleep 50 && python3 -m uvicorn main:app --host 127.0.0.1 --port 8000 --workers 1"
32
  directory=/app/backend
33
  environment=
34
  NEO4J_URI="bolt://127.0.0.1:7687",
35
- NEO4J_USERNAME="%(ENV_NEO4J_USERNAME)s",
36
- NEO4J_PASSWORD="%(ENV_NEO4J_PASSWORD)s",
37
- NEO4J_DATABASE="%(ENV_NEO4J_DATABASE)s",
38
  OPENAI_API_KEY="%(ENV_OPENAI_API_KEY)s",
39
  OPENAI_BASE_URL="%(ENV_OPENAI_BASE_URL)s",
40
  OPENAI_MODEL="%(ENV_OPENAI_MODEL)s"
@@ -43,7 +45,6 @@ autorestart=true
43
  startsecs=15
44
  startretries=5
45
  stdout_logfile=/tmp/backend.log
46
- stderr_logfile=/tmp/backend.log
47
  redirect_stderr=true
48
  priority=30
49
 
@@ -56,7 +57,6 @@ autostart=true
56
  autorestart=true
57
  startsecs=5
58
  stdout_logfile=/tmp/frontend.log
59
- stderr_logfile=/tmp/frontend.log
60
  redirect_stderr=true
61
  priority=40
62
 
@@ -67,6 +67,5 @@ autostart=true
67
  autorestart=true
68
  startsecs=3
69
  stdout_logfile=/tmp/nginx.log
70
- stderr_logfile=/tmp/nginx.log
71
  redirect_stderr=true
72
  priority=50
 
16
  # ── Neo4j Community ────────────────────────────────────────────────────────────
17
  [program:neo4j]
18
  command=/opt/neo4j/bin/neo4j console
19
+ environment=
20
+ NEO4J_HOME=/opt/neo4j,
21
+ JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64,
22
+ NEO4J_AUTH="neo4j/clinicalmatch2024"
23
  autostart=true
24
  autorestart=true
25
  startsecs=45
26
  startretries=3
27
  stdout_logfile=/tmp/neo4j.log
 
28
  redirect_stderr=true
29
  priority=10
30
 
31
+ # ── FastAPI backend ────────────────────────────────────────────────────────────
32
  [program:backend]
33
+ command=bash -c "sleep 60 && python3 -m uvicorn main:app --host 127.0.0.1 --port 8000 --workers 1"
34
  directory=/app/backend
35
  environment=
36
  NEO4J_URI="bolt://127.0.0.1:7687",
37
+ NEO4J_USERNAME="neo4j",
38
+ NEO4J_PASSWORD="clinicalmatch2024",
39
+ NEO4J_DATABASE="neo4j",
40
  OPENAI_API_KEY="%(ENV_OPENAI_API_KEY)s",
41
  OPENAI_BASE_URL="%(ENV_OPENAI_BASE_URL)s",
42
  OPENAI_MODEL="%(ENV_OPENAI_MODEL)s"
 
45
  startsecs=15
46
  startretries=5
47
  stdout_logfile=/tmp/backend.log
 
48
  redirect_stderr=true
49
  priority=30
50
 
 
57
  autorestart=true
58
  startsecs=5
59
  stdout_logfile=/tmp/frontend.log
 
60
  redirect_stderr=true
61
  priority=40
62
 
 
67
  autorestart=true
68
  startsecs=3
69
  stdout_logfile=/tmp/nginx.log
 
70
  redirect_stderr=true
71
  priority=50