> For the complete documentation index, see [llms.txt](https://gameluk.gitbook.io/gameluk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gameluk.gitbook.io/gameluk/develop/developer-tools/docker-cluster.md).

# Docker Cluster

## Prerequisite

### Install Docker & Docker Compose

For MacOS:

```
# The easiest and recommended way to get Docker and
# Docker Compose is to install Docker Desktop here:
https://docs.docker.com/desktop/install/mac-install/
```

For Ubuntu:

```
# Follow the below link to install docker on ubuntu
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
# Follow the below link to install standalone docker compose
https://docs.docker.com/compose/install/other/
```

## Deploy Gameluk Chain Validators on Docker

Detailed instructions and commands can be found the `Makefile`

#### Start a 4 Node Validator Cluster

This will start a 4 node sei chain cluster,  each validator node will be running in its own docker container, and each node will also run the oracle price feeder daemon

```
# If this is the first time or you want to rebuild the binary:
make docker-cluster-start

# If you have run docker-cluster-start and build/seid exist, 
# you can skip the build process to quick start by:
make docker-cluster-start-skipbuild
```

All the logs and genesis files will be generated under the temporary build/generated folder. To access the service log:

```
# Monitor logs after cluster is started for node0
tail -f build/generated/seid-0.log
```

#### **SSH into a single validator node**

```
# List all containers
docker ps -a
# SSH into a running container
docker exec -it [container_name] /bin/bash
```

## Deploy a State Sync Node

**Requirement**: Follow the above steps to start a 4 node docker cluster before starting any state sync node.

```
# Be sure to start up a 4-node cluster before you start a state sync node
make docker-cluster-start
# Wait for at least a few minutes till the latest block height exceed 500 (this can be changed via app.toml)
seid status |jq
# Start up a state sync node
make run-rpc-nodesh
```

## Local Docker for Debugging  & Testing

One of the fanciest thing of using docker is fast iteration. Here we support:

* Being able to make changes locally and start up the chain to see the immediate impact
* Being able to make changes to local dependency repo (Cosmo SDK/Tendermint) and start the chain with the latest changes without bumping or release any binary version

In order to make local debugging work, you can follow these steps:

## Local Docker for Debugging  & Testing

One of the fanciest thing of using docker is fast iteration. Here we support:

* Being able to make changes locally and start up the chain to see the immediate impact
* Being able to make changes to local dependency repo (Cosmo SDK/Tendermint) and start the chain with the latest changes without bumping or release any binary version

In order to make local debugging work, you can follow these steps:

```
# Clone your dependency repo and put them under the same path as sei-chain
cd sei-chain
cd ../
git clone https://github.com/sei-protocol/sei-tendermint.git
git clone https://github.com/sei-protocol/sei-cosmos.git

# Modify go.mod file to point to local repo, must use the exact same path as below:
cd sei-chain
go mod edit -replace github.com/cosmos/cosmos-sdk=../sei-cosmos
go mod edit -replace github.com/tendermint/tendermint=../sei-tendermint

# Start the docker cluster
make docker-cluster-start
# You are good to go now! Make changes as you wish to any of the dependency repo and run docker to test it out.

```
