diff --git a/docs/exchange-operators/rosetta/docker-compose.mdx b/docs/exchange-operators/rosetta/docker-compose.mdx new file mode 100644 index 000000000..bd2494416 --- /dev/null +++ b/docs/exchange-operators/rosetta/docker-compose.mdx @@ -0,0 +1,125 @@ +--- +title: Docker Compose Rosetta +sidebar_label: Docker Compose example +description: Example of how to run Mina Rosetta node using Docker Compose. +keywords: + - mina rosetta + - docker compose + - postgres + - archive + - daemon + - graphQL +--- + +# Docker Compose Rosetta + +This example demonstrates how to run the Mina Rosetta bundle using Docker Compose for the Mainnet network. This Docker Compose setup includes a Postgres database, a bootstrap database populated with the latest daily SQL dump available, an archive node, a Mina node, and a Missing Blocks Guardian which will fill in any missing blocks. + +Copy and paste the provided configuration into a `docker-compose.yaml` file. Then run `docker compose up -d` to start the services, and use `docker compose logs -f` to monitor the logs. + +```yaml +services: + postgres: + image: postgres + restart: always + environment: + POSTGRES_PASSWORD: postgres + POSTGRES_DB: archive + healthcheck: + test: ["CMD-SHELL", "psql -U postgres -d archive -tAc \"SELECT COUNT(*) FROM pg_database WHERE datname='archive';\" | grep -q '^1$'"] + interval: 5s + timeout: 10s + retries: 10 + volumes: + - './archive/postgresql/data:/var/lib/postgresql/data' + ports: + - '5432:5432' + bootstrap_db: + image: 'minaprotocol/mina-archive:3.0.0-93e0279-bullseye' + command: > + bash -c ' + curl -O https://673156464838-mina-archive-node-backups.s3.us-west-2.amazonaws.com/mainnet/mainnet-archive-dump-$(date +%F_0000).sql.tar.gz; + tar -zxvf mainnet-archive-dump-$(date +%F_0000).sql.tar.gz; + psql postgres://postgres:postgres@postgres:5432/archive -c " + ALTER SYSTEM SET max_connections = 500; + ALTER SYSTEM SET max_locks_per_transaction = 100; + ALTER SYSTEM SET max_pred_locks_per_relation = 100; + ALTER SYSTEM SET max_pred_locks_per_transaction = 5000; + " + psql postgres://postgres:postgres@postgres:5432/archive -f mainnet-archive-dump-$(date +%F_0000).sql; + ' + depends_on: + postgres: + condition: service_healthy + missing_blocks_guardian: + image: 'minaprotocol/mina-archive:3.0.0-93e0279-bullseye' + command: > + bash -c ' + curl -O https://raw.githubusercontent.com/MinaFoundation/helm-charts/main/mina-archive/scripts/missing-blocks-guardian-command.sh; + export GUARDIAN_PRECOMPUTED_BLOCKS_URL=https://673156464838-mina-precomputed-blocks.s3.us-west-2.amazonaws.com/mainnet; + export MINA_NETWORK=mainnet; + export PG_CONN=postgres://postgres:postgres@postgres:5432/archive; + while true; do bash missing-blocks-guardian-command.sh; sleep 600; done + ' + depends_on: + bootstrap_db: + condition: service_completed_successfully + mina_archive: + image: 'minaprotocol/mina-archive:3.0.0-93e0279-bullseye' + restart: always + command: + - mina-archive + - run + - --postgres-uri + - postgres://postgres:postgres@postgres:5432/archive + - --server-port + - "3086" + volumes: + - './archive/data:/data' + depends_on: + bootstrap_db: + condition: service_completed_successfully + mina_node: + image: 'minaprotocol/mina-daemon:3.0.0-93e0279-bullseye-mainnet' + restart: always + environment: + MINA_LIBP2P_PASS: PssW0rD + entrypoint: [] + command: > + bash -c ' + mina daemon --archive-address mina_archive:3086 \ + --peer-list-url https://bootnodes.minaprotocol.com/networks/mainnet.txt \ + --insecure-rest-server \ + --rest-port 3085 + ' + ports: + - '3085:3085' + - '8302:8302' + depends_on: + bootstrap_db: + condition: service_completed_successfully + mina_rosetta: + image: 'minaprotocol/mina-rosetta:3.0.0-93e0279-bullseye' + restart: always + environment: + MINA_ROSETTA_MAX_DB_POOL_SIZE: 80 + MINA_ROSETTA_PG_DATA_INTERVAL: 30 + entrypoint: [] + command: > + bash -c ' + mina-rosetta --port 3087 \ + --archive-uri postgres://postgres:postgres@postgres:5432/archive \ + --graphql-uri mina_node:3085/graphql \ + --log-level Info + ' + ports: + - '3087:3087' + depends_on: + bootstrap_db: + condition: service_completed_successfully +``` + +Once the services are running, you can access the Mina node graphql endpoint at `http://localhost:3085/graphql` and the postgres database using `psql postgres://postgres:postgres@localhost:5432/archive`. +You can also access the Rosetta API at `http://localhost:3087`. + +To retrieve the status of the Mina Node, run `docker compose exec mina_node mina client status` diff --git a/sidebars.js b/sidebars.js index 3ffbbe0c5..ebeb0f8ce 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1541,6 +1541,7 @@ module.exports = { label: 'Rosetta API', items: [ 'exchange-operators/rosetta/run-with-docker', + 'exchange-operators/rosetta/docker-compose', 'exchange-operators/rosetta/build-from-sources', 'exchange-operators/rosetta/send-requests', {