# https://github.com/graphprotocol/graph-node/blob/master/docker/docker-compose.yml

version: "3"

services:
    graph-node:
        image: graphprotocol/graph-node
        ports:
            - "8000:8000"
            - "8001:8001"
            - "8020:8020"
            - "8030:8030"
            - "8040:8040"
        depends_on:
            - ipfs
            - postgres
        extra_hosts:
            - host.docker.internal:host-gateway
        environment:
            postgres_host: postgres
            postgres_user: graph-node
            postgres_pass: let-me-in
            postgres_db: graph-node
            ipfs: "ipfs:5001"
            ethereum: "localhost:http://host.docker.internal:8545"
            GRAPH_LOG: info
    ipfs:
        image: ipfs/kubo:v0.14.0
        ports:
            - "5001:5001"
        volumes:
            - ./data/ipfs:/data/ipfs
    postgres:
        image: postgres:14
        ports:
            - "5432:5432"
        command: ["postgres", "-cshared_preload_libraries=pg_stat_statements", "-cmax_connections=200"]
        environment:
            POSTGRES_USER: graph-node
            POSTGRES_PASSWORD: let-me-in
            POSTGRES_DB: graph-node
            # FIXME: remove this env. var. which we shouldn't need. Introduced by
            # <https://github.com/graphprotocol/graph-node/pull/3511>, maybe as a
            # workaround for https://github.com/docker/for-mac/issues/6270?
            PGDATA: "/var/lib/postgresql/data"
            POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C"
        volumes:
            - ./data/postgres:/var/lib/postgresql/data
