Skip to content

Commit

Permalink
Merge pull request o1-labs#1009 from MinaFoundation/add-docker-compos…
Browse files Browse the repository at this point in the history
…e-for-rosetta

Add Docker Compose example for Rosetta
  • Loading branch information
shimkiv authored Jun 25, 2024
2 parents 385adc6 + 5346ce6 commit 8c002ee
Show file tree
Hide file tree
Showing 2 changed files with 126 additions and 0 deletions.
125 changes: 125 additions & 0 deletions docs/exchange-operators/rosetta/docker-compose.mdx
Original file line number Diff line number Diff line change
@@ -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`
1 change: 1 addition & 0 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
{
Expand Down

0 comments on commit 8c002ee

Please sign in to comment.