# Graph Node Docker Image Preconfigured Docker image for running a Graph Node. ## Usage ```sh docker run -it \ -e postgres_host= \ -e postgres_port= \ -e postgres_user= \ -e postgres_pass= \ -e postgres_db= \ -e ipfs=: \ -e ethereum=: \ graphprotocol/graph-node:latest ``` ### Example usage ```sh docker run -it \ -e postgres_host=host.docker.internal \ -e postgres_port=5432 \ -e postgres_user=graph-node \ -e postgres_pass=oh-hello \ -e postgres_db=graph-node \ -e ipfs=host.docker.internal:5001 \ -e ethereum=mainnet:http://localhost:8545/ \ graphprotocol/graph-node:latest ``` ## Docker Compose The Docker Compose setup requires an Ethereum network name and node to connect to. By default, it will use `mainnet:http://host.docker.internal:8545` in order to connect to an Ethereum node running on your host machine. You can replace this with anything else in `docker-compose.yaml`. > **Note for Linux users:** On Linux, `host.docker.internal` is not > currently supported. Instead, you will have to replace it with the > IP address of your Docker host (from the perspective of the Graph > Node container). > To do this, run: > > ``` CONTAINER_ID=$(docker container ls | grep graph-node | cut -d' ' -f1) docker exec $CONTAINER_ID /bin/bash -c 'apt install -y iproute2 && ip route' | awk '/^default via /{print $3}' > ``` > > This will print the host's IP address. Then, put it into `docker-compose.yml`: > > ``` > sed -i -e 's/host.docker.internal//g' docker-compose.yml > ``` After you have set up an Ethereum node—e.g. Ganache or Parity—simply clone this repository and run ```sh docker-compose up ``` This will start IPFS, Postgres and Graph Node in Docker and create persistent data directories for IPFS and Postgres in `./data/ipfs` and `./data/postgres`. You can access these via: - Graph Node: - GraphiQL: `http://localhost:8000/` - HTTP: `http://localhost:8000/subgraphs/name/` - WebSockets: `ws://localhost:8001/subgraphs/name/` - Admin: `http://localhost:8020/` - IPFS: - `127.0.0.1:5001` or `/ip4/127.0.0.1/tcp/5001` - Postgres: - `postgresql://graph-node:let-me-in@localhost:5432/graph-node` Once this is up and running, you can use [`graph-cli`](https://github.com/graphprotocol/graph-cli) to create and deploy your subgraph to the running Graph Node.