{"owner":"stefan-jansen","repo":"machine-learning-for-trading","hasDocker":true,"hasCompose":true,"hasDockerfile":false,"composePath":"docker-compose.yml","servicesCount":13,"services":[{"name":"ml4t","image":"ml4t/ml4t:latest","build":{"context":".","dockerfile":"envs/ml4t/Dockerfile"},"command":"jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root","ports":["127.0.0.1:8888:8888"],"environment":["ML4T_DATA_PATH=/data","ML4T_PATH=/app","TEST=${TEST:-0}","NEO4J_URI=${NEO4J_URI:-bolt://neo4j:7687}","NEO4J_USER=${NEO4J_USER:-neo4j}","NEO4J_PASSWORD=${NEO4J_PASSWORD:-password}","NUMBA_CACHE_DIR=/tmp/numba_cache","MPLCONFIGDIR=/tmp/matplotlib","POLARS_FMT_MAX_ROWS=20","POLARS_FMT_STR_LEN=50","VIRTUAL_ENV=/opt/ml4t","UV_PROJECT_ENVIRONMENT=/opt/ml4t","PATH=/opt/ml4t/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"],"volumes":[".:/app:rw","${ML4T_DATA_PATH:-./data}:/data:rw","${HF_HOME:-${HOME}/.cache/huggingface}:/home/ml4t/.cache/huggingface:rw"]},{"name":"ml4t-gpu","image":"ml4t/ml4t:latest","build":{"context":".","dockerfile":"envs/ml4t/Dockerfile"},"command":"jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root","ports":["127.0.0.1:8889:8888"],"environment":["ML4T_DATA_PATH=/data","ML4T_PATH=/app","TEST=${TEST:-0}","NEO4J_URI=${NEO4J_URI:-bolt://neo4j:7687}","NEO4J_USER=${NEO4J_USER:-neo4j}","NEO4J_PASSWORD=${NEO4J_PASSWORD:-password}","NUMBA_CACHE_DIR=/tmp/numba_cache","MPLCONFIGDIR=/tmp/matplotlib","POLARS_FMT_MAX_ROWS=20","POLARS_FMT_STR_LEN=50","VIRTUAL_ENV=/opt/ml4t","UV_PROJECT_ENVIRONMENT=/opt/ml4t","PATH=/opt/ml4t/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"],"volumes":[".:/app:rw","${ML4T_DATA_PATH:-./data}:/data:rw","${HF_HOME:-${HOME}/.cache/huggingface}:/home/ml4t/.cache/huggingface:rw"]},{"name":"benchmark","image":"ml4t/ml4t-benchmark:latest","build":{"context":".","dockerfile":"envs/benchmark/Dockerfile"},"ports":["127.0.0.1:8887:8888"],"environment":["ML4T_DATA_PATH=/data","ML4T_PATH=/app","TEST=${TEST:-0}","QLIC=/home/ml4t/.kx","QHOME=/home/ml4t/.kx/q","CLICKHOUSE_HOST=ml4t-clickhouse","CLICKHOUSE_PORT=8123","QUESTDB_HOST=ml4t-questdb","QUESTDB_HTTP_PORT=9000","TIMESCALE_HOST=ml4t-timescaledb","TIMESCALE_PORT=5432","TIMESCALE_PASSWORD=benchmark","INFLUXDB_HOST=ml4t-influxdb","INFLUXDB_PORT=8086","INFLUXDB_ORG=ml4t","INFLUXDB_TOKEN=benchmark-token","INFLUXDB_BUCKET=market_data","POSTGRES_HOST=ml4t-postgres","POSTGRES_PORT=5432","POSTGRES_USER=postgres","POSTGRES_PASSWORD=benchmark","POSTGRES_DB=ml4t"],"volumes":[".:/app:rw","${ML4T_DATA_PATH:-./data}:/data:rw","${KX_HOME:-${HOME}/.kx}:/home/ml4t/.kx:ro","${PYKX_HOME:-${HOME}/.pykx}:/home/ml4t/.pykx:ro"]},{"name":"benchmark-full","build":{"context":".","dockerfile":"envs/benchmark/Dockerfile.full"},"ports":["127.0.0.1:8887:8888"],"environment":["ML4T_DATA_PATH=/data","ML4T_PATH=/app","TEST=${TEST:-0}","CLICKHOUSE_HOST=ml4t-clickhouse","CLICKHOUSE_PORT=8123","QUESTDB_HOST=ml4t-questdb","QUESTDB_HTTP_PORT=9000","TIMESCALE_HOST=ml4t-timescaledb","TIMESCALE_PORT=5432","TIMESCALE_PASSWORD=benchmark","INFLUXDB_HOST=ml4t-influxdb","INFLUXDB_PORT=8086","INFLUXDB_ORG=ml4t","INFLUXDB_TOKEN=benchmark-token","INFLUXDB_BUCKET=market_data","POSTGRES_HOST=ml4t-postgres","POSTGRES_PORT=5432","POSTGRES_USER=postgres","POSTGRES_PASSWORD=benchmark","POSTGRES_DB=ml4t"],"volumes":[".:/app:rw","${ML4T_DATA_PATH:-./data}:/data:rw","${HF_HOME:-${HOME}/.cache/huggingface}:/home/ml4t/.cache/huggingface:rw"]},{"name":"rapids","build":{"context":".","dockerfile":"envs/rapids/Dockerfile"},"environment":["ML4T_DATA_PATH=/data","ML4T_PATH=/app","TEST=${TEST:-0}","NEO4J_URI=${NEO4J_URI:-bolt://neo4j:7687}","NEO4J_USER=${NEO4J_USER:-neo4j}","NEO4J_PASSWORD=${NEO4J_PASSWORD:-password}","NUMBA_CACHE_DIR=/tmp/numba_cache","MPLCONFIGDIR=/tmp/matplotlib","POLARS_FMT_MAX_ROWS=20","POLARS_FMT_STR_LEN=50","VIRTUAL_ENV=/opt/ml4t","UV_PROJECT_ENVIRONMENT=/opt/ml4t","PATH=/opt/ml4t/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"],"volumes":[".:/app:rw","${ML4T_DATA_PATH:-./data}:/data:rw","${HF_HOME:-${HOME}/.cache/huggingface}:/home/ml4t/.cache/huggingface:rw"]},{"name":"py312","image":"ml4t/ml4t-py312:latest","build":{"context":".","dockerfile":"envs/py312/Dockerfile"},"environment":["ML4T_DATA_PATH=/data","ML4T_PATH=/app","TEST=${TEST:-0}","NEO4J_URI=${NEO4J_URI:-bolt://neo4j:7687}","NEO4J_USER=${NEO4J_USER:-neo4j}","NEO4J_PASSWORD=${NEO4J_PASSWORD:-password}","NUMBA_CACHE_DIR=/tmp/numba_cache","MPLCONFIGDIR=/tmp/matplotlib","POLARS_FMT_MAX_ROWS=20","POLARS_FMT_STR_LEN=50","VIRTUAL_ENV=/opt/ml4t","UV_PROJECT_ENVIRONMENT=/opt/ml4t","PATH=/opt/ml4t/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"],"volumes":[".:/app:rw","${ML4T_DATA_PATH:-./data}:/data:rw","${HF_HOME:-${HOME}/.cache/huggingface}:/home/ml4t/.cache/huggingface:rw"]},{"name":"py312-gpu","image":"ml4t/ml4t-py312:latest","build":{"context":".","dockerfile":"envs/py312/Dockerfile"},"environment":["ML4T_DATA_PATH=/data","ML4T_PATH=/app","TEST=${TEST:-0}","NEO4J_URI=${NEO4J_URI:-bolt://neo4j:7687}","NEO4J_USER=${NEO4J_USER:-neo4j}","NEO4J_PASSWORD=${NEO4J_PASSWORD:-password}","NUMBA_CACHE_DIR=/tmp/numba_cache","MPLCONFIGDIR=/tmp/matplotlib","POLARS_FMT_MAX_ROWS=20","POLARS_FMT_STR_LEN=50","VIRTUAL_ENV=/opt/ml4t","UV_PROJECT_ENVIRONMENT=/opt/ml4t","PATH=/opt/ml4t/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"],"volumes":[".:/app:rw","${ML4T_DATA_PATH:-./data}:/data:rw","${HF_HOME:-${HOME}/.cache/huggingface}:/home/ml4t/.cache/huggingface:rw"]},{"name":"neo4j","image":"neo4j:2026.02.2","ports":["127.0.0.1:7474:7474","127.0.0.1:7687:7687"],"environment":["NEO4J_AUTH=${NEO4J_AUTH:-neo4j/password}"],"volumes":["neo4j_data:/data","neo4j_logs:/logs"]},{"name":"timescaledb","image":"timescale/timescaledb:latest-pg16","ports":["127.0.0.1:5437:5432"],"environment":["POSTGRES_PASSWORD=benchmark","POSTGRES_DB=ml4t","POSTGRES_USER=postgres"]},{"name":"postgres","image":"postgres:16","ports":["127.0.0.1:5436:5432"],"environment":["POSTGRES_PASSWORD=benchmark","POSTGRES_DB=ml4t","POSTGRES_USER=postgres"]},{"name":"clickhouse","image":"clickhouse/clickhouse-server:latest","ports":["127.0.0.1:8123:8123"],"environment":["CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1","CLICKHOUSE_USER=default","CLICKHOUSE_PASSWORD="]},{"name":"questdb","image":"questdb/questdb:latest","ports":["127.0.0.1:9000:9000","127.0.0.1:9009:9009"]},{"name":"influxdb","image":"influxdb:2.7","ports":["127.0.0.1:8086:8086"],"environment":["DOCKER_INFLUXDB_INIT_MODE=setup","DOCKER_INFLUXDB_INIT_USERNAME=admin","DOCKER_INFLUXDB_INIT_PASSWORD=benchmark123","DOCKER_INFLUXDB_INIT_ORG=ml4t","DOCKER_INFLUXDB_INIT_BUCKET=market_data","DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=benchmark-token"]}],"exposedPorts":["8888","8889","8887","7474","7687","5437","5436","8123","9000","9009","8086"],"dockerRunCommand":"docker run -d --name machine-learning-for-trading -p 8888:8888 --restart always ml4t/ml4t:latest","podmanRunCommand":"podman run -d --name machine-learning-for-trading -p 8888:8888 --restart always ml4t/ml4t:latest","skopeoInspectCommand":"skopeo inspect docker://docker.io/ml4t/ml4t:latest","orasPullCommand":"oras pull ml4t/ml4t:latest","registryMeta":{"provider":"dockerhub","image":"ml4t/ml4t","canonicalImage":"docker.io/ml4t/ml4t:latest","latestTag":"latest","cliCommands":{"dockerRun":"docker run -d --name machine-learning-for-trading -p 8888:8888 --restart always ml4t/ml4t:latest","dockerPull":"docker pull ml4t/ml4t:latest","podmanRun":"podman run -d --name machine-learning-for-trading -p 8888:8888 --restart always ml4t/ml4t:latest","skopeoInspect":"skopeo inspect docker://docker.io/ml4t/ml4t:latest","orasPull":"oras pull ml4t/ml4t:latest","composeYaml":"services:\n  machine-learning-for-trading:\n    image: ml4t/ml4t:latest\n    restart: unless-stopped\n    ports:\n      - \"8888:8888\""}}}