Para arrancar una instancia de cardano-db-sync vamos a utilizar Docker como gestor y despliegue de esta instancia. Antes de continuar asegúrese de tener instalado Docker.
Primero desinstalamos posibles versiones viejas de Docker:
Si nos fijamos en la configuración vemos que Docker va a utilizar la credenciales postgres_db, postregres_password y postgres_user. Las va a ir a buscar a la carpeta /home/cardano/cardano-db-sync/config/secrets/. El repositorio por defecto trae estos archivos bajo el sufijo *_example, solo tenemos que reemplazar o duplicar los ejemplos.
Antes de correr Docker necesitamos añadir nuestro usuario al grupo docker:
sudo usermod -aG docker $USER
Ahorra arrancamos la instancia con los mensajes de log activados:
docker-compose up -d && docker-compose logs -f
Con esto hemos arrancado los servicios cardano-node, la base de datos postgresql, y la herramienta cardano-db-sync. Podemos acceder a estos servicios a través del puerto por defecto: 5432.
Una ejecución más óptima
Vamos a utilizar tmux para ejecutar docker en segundo plano y mostrar el estado de la máquina en vivo.
Creamos el script que levanta el servicio en segundo plano:
cd /home/cardano/cardano-db-sync
vim start.sh
#!/bin/bash
session="cardano-db-sync"
# Check if the session exists, discarding output
# We can check $? for the exit status (zero for success, non-zero for failure)
tmux has-session -t $session 2>/dev/null
if [ $? != 0 ]; then
tmux attach-session -t $session
tmux new -s "cardano-db-sync" -n "node" -d
tmux split-window -v
tmux select-pane -t 'cardano-db-sync:node.0'
tmux split-window -h
tmux send-keys -t 'cardano-db-sync:node.0' './init-cardano-db.sh' Enter
tmux send-keys -t 'cardano-db-sync:node.1' 'htop' Enter
tmux send-keys -t 'cardano-db-sync.2' 'nload' Enter
fi
tmux attach-session -t $session
Creamos el script que ejecuta docker:
cd /home/cardano/cardano-db-sync
vim init-cardano-db.sh
#!/bin/bash
docker-compose up -d && docker-compose logs -f
Creamos el script que finaliza el servicio asociado a la sesión "cardano-db-sync".
cardano-db-sync
vim stop.sh
#!/bin/bash
# Check if the session exists, discarding output
# We can check $? for the exit status (zero for success, non-zero for failure)
session="cardano-db-sync"
# Check if the session exists, discarding output
# We can check $? for the exit status (zero for success, non-zero for failure)
tmux has-session -t $session 2>/dev/null
if [ $? != 0 ]; then
echo "Session not found."
else
echo "Killing session"
tmux kill-session -t cardano-db-sync
fi
Agregamos permisos de ejecución a los scripts:
chmod +x start.sh stop.sh init-cardano-db.sh
Finalmente arrancamos el servicio:
./start.sh
Una vez iniciado podemos lanzar consultas a la dirección localhost:5432.
Listamos todos los containers:
docker container ls -a
Eliminar un container concreto por su ID:
docker container rm 661525b875a1
Terminar todas las instancias:
docker-compose down -v
Relanzamos las instancias:
docker-compose up --remove-orphans --force-recreate
Apoyo nuestro trabajo delegando al pool Ada Booster.