Saltar al contenido
Entorno de prueba con Docker

Entorno de prueba con Docker

El entorno de prueba ejecuta, en containers, Riversoft STCP Gemini y Riversoft STCP DirectLink completos, con la base de datos, la Riversoft STCP Gemini API y el Riversoft Console Portal. Sirve para evaluar los productos, capacitar equipos, reproducir problemas y validar versiones nuevas antes de actualizar producción.

Solo para pruebas

El entorno se ejecuta sin TLS, guarda contraseñas y secretos en el archivo .env y publica la base de datos en el host. No use estos archivos como base para un entorno de producción. Para producción, siga Instalación y Seguridad.

Descarga

Descargue el paquete con los archivos del entorno: stcp-test-environment.zip.

ArchivoContenido
DockerfileImagen base Oracle Linux 9 con el repositorio de Riversoft y un destino por servicio.
docker-compose.ymlServicios, volúmenes, puertos y perfiles del entorno.
.env.examplePlantilla de las variables: instancia, base, secretos, licencias, puertos y versión del portal.
entrypoints/Scripts que generan la configuración de cada componente a partir de la plantilla del paquete e inician el proceso en primer plano.
db/init/ y scripts/download-db-scripts.sh (Linux y macOS) o scripts/download-db-scripts.ps1 (Windows)Creación de las bases con los scripts de Riversoft para MariaDB y del usuario de base de datos de los productos. El script de Linux y macOS usa unzip, bsdtar, python3 o, si no hay ninguno, un contenedor temporal.
README.mdResumen del entorno, comandos y enlaces a esta página en los tres idiomas.

El entorno se probó con Oracle Linux 9, MariaDB 10.11 y stcpdirectlink-portal 3.12.1-0.

Qué ejecuta el entorno

ServicioContenidoPuerto en el host
dbMariaDB 10.11, con la base de configuración y la base de log.3306
stcpgemini-apiRiversoft STCP Gemini API y Riversoft Console Portal (modo -lite).33070
stcpgemini-serverRiversoft STCP Gemini Server y Riversoft STCP Gemini Rename.3305 (OFTP)
stcpdirectlinkRiversoft STCP DirectLink, Riversoft STCP DirectLink Portal y Riversoft STCP Gemini Rename.8080
    flowchart LR
    NAV[Navegador] -->|33070| API[stcpgemini-api<br/>Gemini API y Console Portal]
    NAV -->|8080| DL[stcpdirectlink<br/>DirectLink y DirectLink Portal]
    PARC[Socio OFTP] -->|3305| SRV[stcpgemini-server<br/>Gemini Server y Rename]
    API -->|Supervisión 33050| SRV
    API -->|Supervisión 33060| DL
    API --> DB[(db<br/>MariaDB)]
    SRV --> DB
    DL --> DB
    SRV --- CP[(Volumen<br/>mailboxes)]
    DL --- CP
  

Riversoft STCP Gemini Server y Riversoft STCP DirectLink comparten el volumen de los buzones (/usr/local/stcp/data). Los puertos de supervisión solo son accesibles en la red interna del compose, para la Riversoft STCP Gemini API.

Requisitos previos

  • Docker con el plugin Compose.
  • En computadoras ARM, como Mac con Apple Silicon, la emulación amd64 habilitada. Los paquetes de Riversoft se distribuyen para x86_64, y los servicios de los productos usan platform: linux/amd64.
  • Acceso a repo.riversoft.com.br y a www.riversoft.com.br durante el build.
  • Archivo de licencia de Riversoft STCP DirectLink y, si corresponde, de Riversoft STCP Gemini Rename, proporcionados por Riversoft.
  • En Windows, Docker Desktop y PowerShell 5.1 o superior. Si la política de ejecución bloquea el script, ejecute powershell -ExecutionPolicy Bypass -File .\scripts\download-db-scripts.ps1.
  • La clave de cifrado de las contraseñas (STCP_CONFIG_PASSPHRASE), usada por todos los componentes. Vea Clave de cifrado de las contraseñas.

Paso a paso

Prepare los archivos

unzip stcp-test-environment.zip && cd stcp-test-environment
cp .env.example .env
./scripts/download-db-scripts.sh
cp <licencia>.jwt licenses/stcpdirectlink-license.jwt

En el .env, ajuste las contraseñas, los secretos y la clave de cifrado (STCP_CONFIG_PASSPHRASE). Todos los componentes usan el mismo valor. Revise en el script 0-STCPGeminiCreateDatabase_*.sql los nombres de las bases creadas y, si son diferentes, ajuste STCP_DB_CONFIG y STCP_DB_LOG.

Inicie la base, la API y el Console Portal

docker compose up -d --build

En el primer inicio, MariaDB ejecuta los scripts de Riversoft y crea el usuario de base de datos de los productos.

Cree la instancia en el Riversoft Console Portal

Abra http://localhost:33070, inicie sesión con el operador administrador predeterminado (stcpadmin) y cambie la contraseña. Después:

  1. Cree la instancia con el nombre definido en STCP_INSTANCE.
  2. Registre los servicios de red de OFTP (puerto 3305) y de la API de Riversoft STCP DirectLink (puerto 8080). Al crear el servicio de la API, el Console Portal completa las rutas predeterminadas de las páginas estáticas y de las plantillas.
  3. Registre los servicios Supervisión (gemini), en el puerto 33050, y Supervisión (directlink), en el puerto 33060, con la dirección 0.0.0.0 y una credencial de supervisión para cada uno.
  4. En el registro API/Supervisión, indique stcpgemini-server, puerto 33050, y stcpdirectlink, puerto 33060, con las credenciales de supervisión.
  5. Registre un usuario de prueba.

Vea Servicios de supervisión.

Inicie Gemini Server y DirectLink

docker compose --profile transfer up -d --build

Los dos servicios no se inician sin la instancia. Vea Creación de la instancia.

Pruebe

  • Riversoft STCP DirectLink Portal: http://localhost:8080/portal, con el usuario de prueba.
  • API de Riversoft STCP DirectLink: siga el Inicio rápido de la Riversoft STCP DirectLink API con http://localhost:8080/directlink/v2.
  • OFTP: configure un socio que apunte al puerto 3305 del host.

Elimine el entorno

Al terminar las pruebas, detenga los containers y elimine los volúmenes, las imágenes creadas en el build y la red del entorno:

docker compose --profile transfer down -v --rmi local

Atención

El -v elimina la base de datos y los buzones del entorno, incluidos la instancia y los registros hechos en el Console Portal. Para mantener los datos y solo detener el entorno, use docker compose --profile transfer down.

Después, elimine la carpeta stcp-test-environment, que contiene el .env con las contraseñas y el archivo de licencia.

Configuración generada

En el primer inicio, cada container genera su archivo de configuración a partir de la plantilla instalada por el paquete (example-*.json), con los valores del .env. Así, la configuración acompaña la versión instalada. Para usar un archivo propio, móntelo como volumen en la misma ruta: si el archivo existe, se mantiene.

ComponenteArchivo
Riversoft STCP Gemini API/usr/local/stcpgemini-api/configs/config.json
Riversoft Console Portal/usr/local/stcpgemini-api/portal/app/configs/config.json
Riversoft STCP Gemini Server/usr/local/stcp/configs/stcpserver.config.json
Riversoft STCP DirectLink/usr/local/stcpdirectlink/configs/config.json
Riversoft STCP DirectLink Portal/usr/local/stcpdirectlink/static/portal/assets/configs/config.json
Riversoft STCP Gemini Rename/usr/local/stcpren/configs/config.json
docker-compose.yml
# Riversoft STCP Gemini and Riversoft STCP DirectLink test environment.
# Step 1:  docker compose up -d --build                    (database + API + Console Portal)
# Step 2:  create the instance and a test user in the Riversoft Console Portal
# Step 3:  docker compose --profile transfer up -d --build (Gemini Server + DirectLink)
name: stcp-test

x-stcp-env: &stcp-env
  STCP_INSTANCE: ${STCP_INSTANCE:?set STCP_INSTANCE in .env}
  STCP_DB_HOST: db
  STCP_DB_PORT: "3306"
  STCP_DB_USER: ${STCP_DB_USER:-stcp}
  STCP_DB_PASSWORD: ${STCP_DB_PASSWORD:?set STCP_DB_PASSWORD in .env}
  STCP_DB_CONFIG: ${STCP_DB_CONFIG:-GEMINI_DBConfig}
  STCP_DB_LOG: ${STCP_DB_LOG:-GEMINI_DBLog}
  STCP_CONFIG_PASSPHRASE: ${STCP_CONFIG_PASSPHRASE:?set STCP_CONFIG_PASSPHRASE in .env}
  STCPREN_LICENSE: ${STCPREN_LICENSE:-}
  TZ: ${TZ:-America/Sao_Paulo}

services:

  db:
    image: mariadb:10.11
    environment:
      MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:?set MARIADB_ROOT_PASSWORD in .env}
      STCP_DB_USER: ${STCP_DB_USER:-stcp}
      STCP_DB_PASSWORD: ${STCP_DB_PASSWORD}
      STCP_DB_CONFIG: ${STCP_DB_CONFIG:-GEMINI_DBConfig}
      STCP_DB_LOG: ${STCP_DB_LOG:-GEMINI_DBLog}
      TZ: ${TZ:-America/Sao_Paulo}
    command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
    volumes:
      - db-data:/var/lib/mysql
      - ./db/init:/docker-entrypoint-initdb.d:ro
    ports:
      - "${DB_PORT:-3306}:3306"
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 30
      start_period: 30s

  stcpgemini-api:
    platform: linux/amd64
    build:
      context: .
      target: stcpgemini-api
    environment:
      <<: *stcp-env
      STCP_API_PORT: "33070"
      STCP_PORTAL_API_URL: http://localhost:${API_PORT:-33070}
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "${API_PORT:-33070}:33070"
    restart: unless-stopped

  stcpgemini-server:
    platform: linux/amd64
    profiles: ["transfer"]
    build:
      context: .
      target: stcpgemini-server
    environment:
      <<: *stcp-env
    depends_on:
      db:
        condition: service_healthy
      stcpgemini-api:
        condition: service_started
    volumes:
      - mailboxes:/usr/local/stcp/data
      - ./licenses:/licenses:ro
    # Gemini supervision: reached only by stcpgemini-api, on the compose internal network.
    expose:
      - "33050"
    ports:
      - "${OFTP_PORT:-3305}:${OFTP_PORT:-3305}"
    restart: unless-stopped

  stcpdirectlink:
    platform: linux/amd64
    profiles: ["transfer"]
    build:
      context: .
      target: stcpdirectlink
      args:
        STCPDIRECTLINK_PORTAL_VERSION: ${STCPDIRECTLINK_PORTAL_VERSION:-3.12.1-0}
    environment:
      <<: *stcp-env
      STCPDIRECTLINK_SECRET: ${STCPDIRECTLINK_SECRET:?set STCPDIRECTLINK_SECRET in .env}
      STCPDIRECTLINK_LICENSE_FILE: /licenses/${STCPDIRECTLINK_LICENSE:-stcpdirectlink-license.jwt}
      STCPDIRECTLINK_PORTAL_API_URL: http://localhost:${DIRECTLINK_PORT:-8080}/directlink/v2
    depends_on:
      db:
        condition: service_healthy
      stcpgemini-api:
        condition: service_started
    volumes:
      - mailboxes:/usr/local/stcp/data
      - ./licenses:/licenses:ro
    # DirectLink supervision: reached only by stcpgemini-api, on the compose internal network.
    expose:
      - "33060"
    ports:
      - "${DIRECTLINK_PORT:-8080}:${DIRECTLINK_PORT:-8080}"
    restart: unless-stopped

volumes:
  db-data:
  mailboxes:

Comandos útiles

docker compose --profile transfer ps
docker compose --profile transfer logs -f stcpgemini-server stcpdirectlink
docker compose --profile transfer down       # detiene, manteniendo los volúmenes
docker compose --profile transfer down -v    # detiene y elimina la base y los buzones

Solución de problemas

SíntomaCausa probableSolución
stcpgemini-server o stcpdirectlink se reinicia continuamente.La instancia no existe o su nombre difiere de STCP_INSTANCE.Cree la instancia en el Console Portal con el mismo nombre e inicie de nuevo el perfil transfer.
El Console Portal no muestra la supervisión.Los servicios de supervisión o el registro API/Supervisión no están configurados.Revise los servicios en la instancia y use los nombres de los containers en el registro API/Supervisión.
Riversoft STCP DirectLink Portal no abre.La ruta de las páginas estáticas del servicio de la API no es la predeterminada.Verifique que la ruta sea /usr/local/stcpdirectlink/static, sin barra al final.
El build falla al instalar los paquetes en una computadora ARM.La emulación amd64 no está habilitada.Habilite la emulación en Docker.