#!/bin/sh
set -e
CONFIG_SRC="${OGMEM_CONFIG:-/etc/ogmem/config.yaml}"
CONFIG_WORK="/tmp/ogmem.resolved.yaml"
python3 << 'PYEOF'
import re, os, sys
path_src = os.environ.get("OGMEM_CONFIG", "/etc/ogmem/config.yaml")
path_dst = "/tmp/ogmem.resolved.yaml"
with open(path_src) as f:
content = f.read()
def replace_env(m):
var = m.group(1)
val = os.environ.get(var)
if val is not None:
return val
return m.group(0)
content = re.sub(r'\$\{(\w+)\}', replace_env, content)
conn_parts = []
for key in ("OPENGAUSS_HOST", "OPENGAUSS_PORT", "OPENGAUSS_DBNAME",
"OPENGAUSS_USER", "OPENGAUSS_PASSWORD"):
val = os.environ.get(key)
if val:
conn_parts.append(val)
if conn_parts:
host = os.environ.get("OPENGAUSS_HOST", "127.0.0.1")
port = os.environ.get("OPENGAUSS_PORT", "5432")
dbname = os.environ.get("OPENGAUSS_DBNAME", "postgres")
user = os.environ.get("OPENGAUSS_USER", "gaussdb")
password = os.environ.get("OPENGAUSS_PASSWORD", "")
conn = f"host={host} port={port} dbname={dbname} user={user} password={password}"
content = re.sub(
r'connection_string:\s*".*?"',
f'connection_string: "{conn}"',
content,
)
print(f"[entrypoint] Patched vector_db.connection_string: {host}:{port}/{dbname}")
with open(path_dst, "w") as f:
f.write(content)
print(f"[entrypoint] Config resolved: {path_src} -> {path_dst}")
PYEOF
export OGMEM_CONFIG="${CONFIG_WORK}"
eval $(python3 /opt/ogmem/scripts/yaml_to_env.py 2>/dev/null) || true
mkdir -p /data/agfs
echo "[entrypoint] Starting AGFS server..."
/opt/agfs/agfs-server -c /opt/agfs/config.yaml &
AGFS_PID=$!
for i in $(seq 1 30); do
if curl -sf http://127.0.0.1:1833/serverinfo/version >/dev/null 2>&1; then
echo "[entrypoint] AGFS server ready"
break
fi
sleep 0.5
done
echo "[entrypoint] Starting IndexService..."
python3 /opt/ogmem/scripts/run_index_service.py &
INDEX_PID=$!
cleanup() {
echo "[entrypoint] Shutting down..."
kill $INDEX_PID $AGFS_PID 2>/dev/null
wait $INDEX_PID $AGFS_PID 2>/dev/null
exit 0
}
trap cleanup TERM INT
cd /opt/ogmem
OGMEM_PORT=${OGMEM_HTTP_PORT:-8090}
echo "[entrypoint] Starting oGMemory HTTP server on :${OGMEM_PORT}..."
exec python3 -m gunicorn \
--bind "0.0.0.0:${OGMEM_PORT}" \
--workers "${OGMEM_WORKERS:-2}" \
--timeout "${OGMEM_GUNICORN_TIMEOUT:-900}" \
--access-logfile - \
server.app:app