docker-compose.ymlā¢3.63 kB
services:
open-webui:
env_file: .env
container_name: mcp-postgresql-ops-open-webui
image: ghcr.io/open-webui/open-webui:main
depends_on:
postgres-init-extensions:
condition: service_completed_successfully
ports:
- "${DOCKER_EXTERNAL_PORT_OPENWEBUI}:8080"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
volumes:
- open-webui-data:/app/backend/data
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped
mcp-server:
env_file: .env
container_name: mcp-postgresql-ops-mcp-server
image: call518/mcp-server-postgresql-ops:1.0.1
ports:
- "${DOCKER_EXTERNAL_PORT_MCP_SERVER}:8000" ### (WARNING) Must be same with port number of 'FASTMCP_PORT', 'mcp-config.json' and 'mcp-config.json.http'
volumes:
- ./src:/app/src
- ./scripts:/app/scripts
- ./.env:/app/.env:ro
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "nc -z localhost 8000 && sleep 5"]
interval: 5s
timeout: 10s
retries: 5
start_period: 10s
mcpo-proxy:
env_file: .env
image: call518/mcpo-proxy-postgresql-ops:1.0.3
container_name: mcp-postgresql-ops-mcpo-proxy
depends_on:
mcp-server:
condition: service_healthy
ports:
- "${DOCKER_EXTERNAL_PORT_MCPO_PROXY}:8000"
volumes:
- ./mcp-config.json.http:/app/config/mcp-config.json
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped
#------------------------------------------------------
postgres:
env_file: .env
container_name: mcp-postgresql-ops-postgresql-${PGSQL_VERSION}
image: percona/percona-distribution-postgresql:${PGSQL_VERSION}
environment:
PGDATA: ${PGDATA}
POSTGRES_USER: "${POSTGRES_USER}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
POSTGRES_DB: "${POSTGRES_DB}"
LANG: en_US.utf8
ports:
- "${POSTGRES_PORT}:${DOCKER_INTERNAL_PORT_POSTGRESQL}"
volumes:
- postgresql-data:${PGDATA}
extra_hosts:
- "host.docker.internal:host-gateway"
command:
- "-c"
- "port=${DOCKER_INTERNAL_PORT_POSTGRESQL}"
- "-c"
- "max_connections=${POSTGRES_MAX_CONNECTIONS}"
- "-c"
- "shared_preload_libraries=pg_stat_statements,pg_stat_monitor"
- "-c"
- "pg_stat_statements.track=all"
- "-c"
- "track_activity_query_size=2048"
- "-c"
- "track_activities=on"
- "-c"
- "track_counts=on"
- "-c"
- "track_io_timing=on"
- "-c"
- "track_functions=pl"
healthcheck:
test: ["CMD", "pg_isready", "-U", "${POSTGRES_USER}"]
start_period: 5s
interval: 10s
retries: 5
restart: unless-stopped
postgres-init-extensions:
env_file: .env
container_name: mcp-postgresql-ops-postgres-init-extensions
image: percona/percona-distribution-postgresql:${PGSQL_VERSION}
environment:
PGDATA: ${PGDATA}
POSTGRES_USER: "${POSTGRES_USER}"
PGPASSWORD: '${POSTGRES_PASSWORD}'
POSTGRES_DB: "${POSTGRES_DB}"
POSTGRES_PORT: "${DOCKER_INTERNAL_PORT_POSTGRESQL}"
depends_on:
- postgres
entrypoint: /bin/bash
command:
- "-c"
- |
/scripts/create-test-data.sh
volumes:
- ./scripts:/scripts:ro
extra_hosts:
- "host.docker.internal:host-gateway"
restart: no
volumes:
open-webui-data:
name: open-webui-data-mcp-postgresql-ops
postgresql-data:
name: postgresql-data-mcp-postgresql-ops