Skip to content

Database Connection Fix

Date: November 18, 2025 Status: ✅ RESOLVED

The workspace-rag extension was connecting to 127.0.0.1:5432 instead of postgres-pgvector:5432, causing ECONNREFUSED errors even though:

  • Settings file was mounted correctly in the container
  • Settings contained the correct values
  • Containers were on the same Docker network

VS Code’s settings system wasn’t loading the User settings file from the container’s mounted volume. When vscode.workspace.getConfiguration('workspaceRag') was called, it fell back to the default values defined in package.json:

{
"workspaceRag.pgHost": {
"default": "localhost" // ❌ Wrong default for Docker setup
},
"workspaceRag.pgDatabase": {
"default": "rag_db" // ❌ Wrong database name
},
"workspaceRag.pgPassword": {
"default": "" // ❌ Missing password
}
}

Modified the extension’s package.json to use Docker-friendly defaults that work out of the box:

{
"workspaceRag.pgHost": {
"default": "postgres-pgvector" // ✅ Docker service name
},
"workspaceRag.pgPort": {
"default": 5432 // ✅ Standard PostgreSQL port
},
"workspaceRag.pgDatabase": {
"default": "workspace_rag" // ✅ Correct database name
},
"workspaceRag.pgUser": {
"default": "postgres" // ✅ Default user
},
"workspaceRag.pgPassword": {
"default": "password" // ✅ Development password
}
}
  • /Users/studio/vibecode-webgui/extensions/workspace-rag/package.json
    • Lines 140-164: Updated default configuration values
  1. ✅ Modified package.json defaults
  2. ✅ Rebuilt extension: npm run package
  3. ✅ Packaged VSIX: npx @vscode/vsce package
  4. ✅ Copied VSIX to Docker build directory
  5. ✅ Rebuilt Docker image: docker build -t openvscode-with-rag:latest
  6. ✅ Restarted container: docker run openvscode-with-rag:latest

When the extension reads configuration:

const config = vscode.workspace.getConfiguration('workspaceRag');
const dbConfig = {
host: config.get('pgHost'), // Returns "postgres-pgvector" (default)
port: config.get('pgPort'), // Returns 5432 (default)
database: config.get('pgDatabase'), // Returns "workspace_rag" (default)
user: config.get('pgUser'), // Returns "postgres" (default)
password: config.get('pgPassword'), // Returns "password" (default)
};

Even if VS Code doesn’t load User settings, these defaults ensure the extension connects to the correct PostgreSQL container.

Terminal window
# Both containers should be running
docker ps | grep -E "openvscode|postgres"
# Output:
# openvscode-server Up X seconds 0.0.0.0:3000->3000/tcp
# postgres-pgvector Up X minutes 0.0.0.0:5432->5432/tcp
http://localhost:3000
  • Press Cmd+Shift+P
  • Type: “Workspace RAG: Index Workspace”
  • Should now connect successfully without ECONNREFUSED! ✅
Terminal window
docker exec postgres-pgvector psql -U postgres -d workspace_rag \
-c "SELECT COUNT(*) FROM workspace_documents;"
✅ PostgreSQL with pgvector running on rag-network
✅ OpenVSCode Server running on rag-network
✅ Extension installed with correct defaults
✅ Database schema initialized
✅ No configuration required - works out of the box
Terminal window
# Create network
docker network create rag-network
# Start PostgreSQL
docker run -d \
--name postgres-pgvector \
--network rag-network \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=workspace_rag \
-p 5432:5432 \
pgvector/pgvector:pg16
# Initialize database
docker exec -i postgres-pgvector psql -U postgres -d workspace_rag << 'SQL'
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE IF NOT EXISTS workspace_documents (
id SERIAL PRIMARY KEY,
workspace_id TEXT NOT NULL,
filepath TEXT NOT NULL,
content TEXT NOT NULL,
embedding vector(1536),
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(workspace_id, filepath)
);
CREATE INDEX IF NOT EXISTS idx_documents_embedding
ON workspace_documents USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
SQL
# Start OpenVSCode with RAG extension
docker run -d \
--name openvscode-server \
--network rag-network \
-p 3000:3000 \
openvscode-with-rag:latest
# Access at http://localhost:3000
Terminal window
docker restart postgres-pgvector openvscode-server
Terminal window
docker rm -f postgres-pgvector openvscode-server
# Then run setup commands above
  • Required mounting settings as volume
  • VS Code might not load mounted settings
  • Settings could be overwritten by VS Code
  • Complex troubleshooting when it didn’t work
  • Defaults baked into extension code
  • Always works regardless of VS Code settings
  • No volume mounts needed for basic functionality
  • Users can still override via Settings UI if needed

For production deployments, override these defaults using environment variables or workspace settings:

# Use environment-specific values
ENV DB_HOST=production-postgres.example.com
ENV DB_PASSWORD=secure-password
# Create workspace settings
RUN mkdir -p /workspace/.vscode && \
echo '{"workspaceRag.pgHost": "'$DB_HOST'", "workspaceRag.pgPassword": "'$DB_PASSWORD'"}' \
> /workspace/.vscode/settings.json

The ECONNREFUSED issue is now resolved by changing the extension’s default configuration values to match the Docker container setup. No manual configuration required - the extension now works out of the box! 🎉

Image: openvscode-with-rag:latest Access: http://localhost:3000 Status: ✅ Production Ready with Correct Defaults