Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Docker Compose example for Rosetta #1009

Merged
merged 1 commit into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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