Backend Docker Compose Services¶
This page documents the services defined in docker-compose.yml.
Each service also has its own page under backend/docker/ with more detailed configuration.
Services overview¶
| Service | Image | Description |
|---|---|---|
consul |
hashicorp/consul:1.18 |
consul |
consul-jwt-init |
hashicorp/consul:1.18 |
consul-jwt-init |
app |
`` | app |
tutor-db |
pgvector/pgvector:pg16 |
tutor-db |
web |
`` | web |
osss_postgres |
`` | osss_postgres |
redis |
redis:7-alpine |
redis |
kc_postgres |
postgres:16 |
kc_postgres |
keycloak |
`` | keycloak |
vault |
hashicorp/vault:1.20.3 |
vault |
vault-oidc-setup |
`` | vault-oidc-setup |
vault-seed |
alpine:3.20 |
vault-seed |
shared-vol-init |
alpine:3.20 |
shared-vol-init |
es-shared-init |
alpine:3.19 |
es-shared-init |
elasticsearch |
docker.elastic.co/elasticsearch/elasticsearch:8.14.3 |
elasticsearch |
kibana-pass-init |
curlimages/curl:8.8.0 |
kibana-pass-init |
kibana |
docker.elastic.co/kibana/kibana:8.14.3 |
kibana |
api-key-init |
curlimages/curl:8.8.0 |
api-key-init |
filebeat-setup |
docker.elastic.co/beats/filebeat:8.14.3 |
filebeat-setup |
filebeat |
docker.elastic.co/beats/filebeat:8.14.3 |
filebeat |
trino |
trinodb/trino:latest |
trino |
superset-build |
osss/superset:with-drivers |
superset-build |
superset_redis |
redis:7-alpine |
superset_redis |
postgres-superset |
postgres:16 |
postgres-superset |
superset-init |
osss/superset:with-drivers |
superset-init |
superset |
osss/superset:with-drivers |
superset |
postgres-airflow |
postgres:16 |
postgres-airflow |
airflow-init |
apache/airflow:2.9.3-python3.11 |
airflow-init |
airflow-webserver |
apache/airflow:2.9.3-python3.11 |
airflow-webserver |
airflow-scheduler |
apache/airflow:2.9.3-python3.11 |
airflow-scheduler |
airflow-redis |
redis:7-alpine |
airflow-redis |
execute-migrate-all |
docker.getcollate.io/openmetadata/server:1.9.12 |
execute_migrate_all |
openmetadata-server |
docker.getcollate.io/openmetadata/server:1.9.12 |
openmetadata-server |
mysql |
docker.getcollate.io/openmetadata/db:1.9.12 |
mysql |
om-elasticsearch |
docker.elastic.co/elasticsearch/elasticsearch:8.11.4 |
om-elasticsearch |
ingestion |
docker.getcollate.io/openmetadata/ingestion:1.9.12 |
openmetadata-ingestion |
qdrant |
`` | qdrant |
minio |
minio/minio:latest |
minio |
ai-redis |
redis:7 |
ai-redis |
ai-postgres |
postgres:15 |
ai-postgres |
dvc |
python:3.11-slim |
dvc |
rasa-mentor |
rasa/rasa:3.6.20 |
rasa-mentor |
a2a |
`` | a2a |
metagpt |
`` | metagpt |
a2a-agent |
`` | a2a-agent |
zulip |
`` | zulip |
zulip-db |
zulip/zulip-postgresql:14 |
zulip-db |
zulip-memcached |
memcached:1.6-alpine |
zulip-memcached |
zulip-redis |
redis:7-alpine |
zulip-redis |
zulip-rabbitmq |
rabbitmq:3.13-management-alpine |
zulip-rabbitmq |
taiga-db |
postgres:16 |
taiga-db |
taiga-rabbitmq |
rabbitmq:3.13-management |
taiga-rabbitmq |
taiga-back |
taigaio/taiga-back:latest |
taiga-back |
taiga-async |
taigaio/taiga-back:latest |
taiga-async |
taiga-events |
taigaio/taiga-events:latest |
taiga-events |
taiga-protected |
taigaio/taiga-protected:latest |
taiga-protected |
taiga-front |
taigaio/taiga-front:latest |
taiga-front |
taiga-gateway |
nginx:1.27-alpine |
taiga-gateway |
taiga-init-admin |
taigaio/taiga-back:latest |
taiga-init-admin |
Service details¶
consul¶
Image: hashicorp/consul:1.18
Container name: consul
Ports:
8500:85008600:8600/tcp8600:8600/udp
Volumes:
./config_files/consul_data:/consul/data:z./config_files/consul/config:/consul/config:rw,z./config_files/consul/jwt:/consul/jwt:rw,z./config_files/keycloak/secrets/ca/ca.crt:/usr/local/share/ca-certificates/keycloak-ca.crt:ro
Networks:
osss-net
Environment:
CONSUL_HTTP_TOKEN=${CONSUL_HTTP_TOKEN:-}
Command:
/bin/sh -lc update-ca-certificates || true; exec consul agent -server -bootstrap-expect=1 -client=0.0.0.0 -ui -log-level=INFO -config-dir=/consul/config
consul-jwt-init¶
Image: hashicorp/consul:1.18
Container name: consul-jwt-init
Volumes:
./config_files/consul/jwt/jwt.json:/cfg/jwt.json:ro,z./config_files/consul/init-jwt.sh:/cfg/init-jwt.sh:ro,z
Depends on:
consul
Networks:
osss-net
Environment:
CONSUL_HTTP_ADDR=http://consul:8500CONSUL_HTTP_TOKEN=${CONSUL_HTTP_TOKEN}
Command:
/cfg/init-jwt.sh
app¶
Build context: .
Dockerfile: docker/app/Dockerfile
Container name: app
Ports:
127.0.0.1:8081:8000
Volumes:
./:/workspace:cached./docker/logging.yml:/workspace/docker/logging.yaml:ro,z./scripts/app-entrypoint.sh:/usr/local/bin/app-entrypoint.sh:ro,zlanggraph_data:/workspace/langgraph_data:z
Depends on:
redisosss_postgrestutor-db
Networks:
osss-net
Environment:
OSSS_VERBOSE_AUTH=1PYTHONUNBUFFERED=1PYTHONLOGLEVEL=DEBUGLOG_LEVEL=DEBUGUVICORN_LOG_LEVEL=debugUVICORN_ACCESS_LOG=1KEYCLOAK_ISSUER=${KEYCLOAK_ISSUER}KEYCLOAK_JWKS_URL=${KEYCLOAK_JWKS_URL}OSSS_DISABLE_AUTH=${OSSS_DISABLE_AUTH}AUTHLIB_DEBUG=1OAUTHLIB_INSECURE_TRANSPORT=1HTTPX_LOG_LEVEL=DEBUGREQUESTS_LOG_LEVEL=DEBUGJOSE_LOG_LEVEL=DEBUGJWcrypto_LOG_LEVEL=DEBUGHOST=0.0.0.0PORT=8000PYTHONPATH=/workspace/srcWATCHFILES_FORCE_POLLING=trueCORS_ALLOW_ORIGINS=${CORS_ALLOW_ORIGINS}CORS_ORIGINS=${CORS_ORIGINS}REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crtSSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crtCURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crtOIDC_DISCOVERY_URL_INTERNAL=${OIDC_DISCOVERY_URL_INTERNAL}OIDC_TOKEN_URL_INTERNAL=${OIDC_TOKEN_URL_INTERNAL}KEYCLOAK_INTERNAL_BASE=${KEYCLOAK_INTERNAL_BASE}OIDC_ISSUER=${OIDC_ISSUER}OIDC_CLIENT_ID=osss-apiOIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET:-password}OSSS_PUBLIC_BASE_URL=http://localhost:8081OIDC_REDIRECT_URL=http://localhost:8081/callbackOIDC_LOGOUT_REDIRECT_URL=http://localhost:8081/OIDC_VERIFY_AUD=0ALLOWED_CLOCK_SKEW=60REDIS_URL=redis://redis:6379/0SESSION_REDIS_HOST=redisSESSION_REDIS_PORT=6379KEYCLOAK_CLIENT_ID=osss-apiKEYCLOAK_CLIENT_SECRET=passwordASYNC_DATABASE_URL=postgresql+asyncpg://${OSSS_DB_USER}:${OSSS_DB_PASSWORD}@osss_postgres:5432/${OSSS_DB_NAME}ALEMBIC_DATABASE_URL=postgresql+asyncpg://${OSSS_DB_USER}:${OSSS_DB_PASSWORD}@osss_postgres:5432/${OSSS_DB_NAME}OIDC_JWKS_URL_INTERNAL=${OIDC_JWKS_URL_INTERNAL}OIDC_VERIFY_ISS=${OIDC_VERIFY_ISS}MIGRATIONS_DIR=/app/src/OSSS/db/migrationsREPO_ROOT=/appALEMBIC_CMD=alembicALEMBIC_INI=/app/alembic.iniOSSS_DB_PASSWORD=${OSSS_DB_PASSWORD}OSSS_DB_NAME=${OSSS_DB_NAME}OSSS_DB_USER=${OSSS_DB_USER}POSTGRES_USER=${POSTGRES_USER}POSTGRES_PASSWORD=${POSTGRES_PASSWORD}POSTGRES_DB=${POSTGRES_DB}DATABASE_URL=${ASYNC_DATABASE_URL}TUTOR_CONFIG_DIR=/app/config/tutorsOLLAMA_BASE=http://host.containers.internal:11434OSSS_TUTOR_DB_USER=${OSSS_TUTOR_DB_USER}OSSS_TUTOR_DB_PASSWORD=${OSSS_TUTOR_DB_PASSWORD}OSSS_TUTOR_DB_NAME=${OSSS_TUTOR_DB_NAME}OSSS_TUTOR_DB_HOST=tutor-dbOSSS_TUTOR_DB_PORT=5432OSSS_TUTOR_CONFIG_DIR=${OSSS_TUTOR_CONFIG_DIR}SAFE_OPENAI_API_BASE=${SAFE_OPENAI_API_BASE}OPENAI_API_BASE=${OPENAI_API_BASE}OPENAI_API_KEY=${OPENAI_API_KEY}OSSS_ADDITIONAL_INDEX_PATH=/workspace/vector_indexes/main/embeddings.jsonlTUTOR_INDEX_PATH=/workspace/vector_indexes/tutor/embeddings.jsonlAGENT_INDEX_PATH=/workspace/vector_indexes/agent/embeddings.jsonlMETAGPT_URL=http://metagpt:8001SEED_JSON_PATH=/mnt/data/seed_full_school.jsonOSSS_LANGCHAIN_PROVIDER=ollamaOLLAMA_BASE_URL=http://localhost:11434/v1OSSS_LANGCHAIN_MODEL=llama3.1:latestSKIP_GL_SEGMENTS=falseOPENBLAS_NUM_THREADS=1OMP_NUM_THREADS=1MKL_NUM_THREADS=1NUMEXPR_NUM_THREADS=1LLM_PROVIDER=ollamaOLLAMA_MODEL=llama3.1OLLAMA_TEMPERATURE=0.2OLLAMA_NUM_CTX=8192OSSS_SYNTHESIS_LLM_PROVIDER=ollamaOSSS_SYNTHESIS_MODEL=llama3.1:latestOSSS_OLLAMA_BASE_URL=http://host.containers.internal:11434OSSS_AI_DB_PERSIST_ENABLED=trueAGENT_LLM_BASE_URL=http://host.containers.internal:11434/v1OSSS_AI_GATEWAY_BASE_URL=http://host.containers.internal:11434
Command:
uvicorn src.OSSS.main:app --host 0.0.0.0 --port 8000 --reload --reload-dir /workspace/src/OSSS --log-level info --access-log --log-config /workspace/docker/logging.yaml
... (truncated for brevity in this code cell; in real use you'd paste the full document)