Usar Docker para crear y ejecutar dapps
¿Qué es Docker?
Bienvenido al mundo de Docker, una herramienta esencial para el desarrollo de software. Docker empaqueta software en unidades conocidas como contenedores, asegurando consistencia, aislamiento, portabilidad y escalabilidad.
Docker es particularmente útil en el desarrollo de dapps. Ayuda a gestionar microservicios, mantener entornos consistentes a lo largo de las etapas de desarrollo y simular una red descentralizada durante las pruebas.
Entender Docker comienza con entender las imágenes y contenedores de Docker. Una imagen de Docker, creada a partir de un Dockerfile, es un paquete que contiene todo lo necesario para ejecutar el software. Un contenedor de Docker es una instancia en ejecución de esta imagen.
Construir y Ejecutar una Imagen de Docker
Puedes crear una imagen de Docker usando el comando docker build con un Dockerfile. Una vez que la imagen está creada, puedes ejecutar un contenedor de Docker usando el comando docker run.
En el contexto de los dapps de ejemplo Soroban, entender cómo construir imágenes de Docker es crucial. Las imágenes de Docker sirven como la base para nuestro contenedor, que proporciona el entorno para que nuestro dapp se ejecute.
Aquí tienes un ejemplo de nuestro ejemplo
Para ilustrar el proceso, tomemos un ejemplo de nuestra ejemplo de dapp de crowdfunding. Para construir la imagen de Docker, utilizas un comando que está encapsulado dentro de nuestro Makefile:
make build-docker
Este comando simplifica el proceso de construcción de Docker y asegura que se ejecute de manera consistente cada vez. Cuando ejecutas make build-docker
, Docker ejecuta las siguientes instrucciones:
docker build . \
--tag soroban-preview:11 \
--force-rm \
--rm
Descripción General del Makefile
docker build .
Instruye a Docker para construir una imagen usando el Dockerfile en el directorio actual (indicado por el ".").
--tag soroban-preview:11
Asigna un nombre y una etiqueta a nuestra imagen, en este caso, soroban-preview con la etiqueta 9.
--force-rm
Asegura que Docker elimine cualquier contenedor intermedio después de que finalice el proceso de construcción. Esto mantiene nuestro entorno limpio.
--rm
Garantiza la eliminación del contenedor intermedio, incluso si la construcción falla. Al usar make build-docker
, estás aprovechando el poder de Docker para crear un entorno consistente y confiable para nuestro dapp.
Despliegue de Contenedores
Puedes agilizar el proceso de despliegue utilizando un script para ejecutar el contenedor de Docker. El siguiente script es un envoltorio para la stellar/quickstart
imagen de Docker, que proporciona una forma rápida de ejecutar una red Stellar. Puedes encontrar un ejemplo del script quickstart.sh
ubicado en el directorio raíz de la ejemplo de dapp de crowdfunding.
#!/bin/bash
set -e
case "$1" in
standalone)
echo "Using standalone network"
ARGS="--standalone"
;;
futurenet)
echo "Using Futurenet network"
ARGS="--futurenet"
;;
*)
echo "Usage: $0 standalone|futurenet"
exit 1
;;
esac
shift
# Run the soroban-preview container
# Remember to do:
# make build-docker
echo "Creating docker soroban network"
(docker network inspect soroban-network -f '{{.Id}}' 2>/dev/null) \
|| docker network create soroban-network
echo "Searching for a previous soroban-preview docker container"
containerID=$(docker ps --filter="name=soroban-preview" --all --quiet)
if [[ ${containerID} ]]; then
echo "Start removing soroban-preview container."
docker rm --force soroban-preview
echo "Finished removing soroban-preview container."
else
echo "No previous soroban-preview container was found"
fi
currentDir=$(pwd)
docker run -dti \
--volume ${currentDir}:/workspace \
--name soroban-preview \
-p 8001:8000 \
--ipc=host \
--network soroban-network \
soroban-preview:11
# Run the stellar quickstart image
docker run --rm -ti \
--name stellar \
--network soroban-network \
-p 8000:8000 \
stellar/quickstart:testing \
$ARGS \
--enable-soroban-rpc \
"$@" # Pass through args from the CLI
El script quickstart.sh
configura el entorno de Docker para ejecutar el dapp. Te permite elegir entre una red independiente o la red Futurenet. El script realiza los siguientes pasos:
- Determina la red en función del argumento proporcionado (
standalone
ofuturenet
). - Crea la red de Docker llamada
soroban-network
si no existe. - Elimina cualquier contenedor de Docker
soroban-preview
existente. - Ejecuta el contenedor
soroban-preview
, que proporciona el entorno para el desarrollo de Soroban Preview. - Ejecuta la imagen de Docker
stellar/quickstart
, que configura la red Stellar utilizando el tipo de red elegido y habilita Stellar RPC.
Guías en esta categoría:
📄️ Usar Docker para crear y ejecutar dapps
Entender Docker y usarlo para crear aplicaciones
📄️ Guía completa de frontend para dapps Stellar
Aprende a crear interfaces de frontend funcionales para dapps Stellar usando React, Tailwind CSS y el Stellar SDK.
📄️ Inicializa una dapp usando scripts
Configura la inicialización correctamente para asegurar un proceso fluido para tu dapp
📄️ Crear un frontend para tu dapp usando React
Conectar frontends de dapp a contratos y la billetera Freighter usando @soroban-react
📄️ Desarrollar plantillas de interfaz de usuario para la inicialización de contratos
Entender, encontrar y crear tus propias plantillas de interfaz de usuario para usarlas con el comando `stellar contract init` de Stellar CLI
📄️ Implementar archivo de estado en dapps
Aprender cómo implementar archivo de estado en tu dapp
📄️ Trabajar con especificaciones de contrato en Java, Python y PHP
Una guía para entender e interactuar con los contratos inteligentes de Soroban en diferentes lenguajes de programación