Skip to main content

podman-deployment

Podman Compose deployment patterns for crypto-scout-collector containerization with TimescaleDB and automated backups Use when this capability is needed.

Zur Installation springen

Quellinformationen

Repository
tomevault-io/skills-registry
Letzte Quellaktivität
28. April 2026 um 22:53
Erkannte Sprache von SKILL.md
Englisch
Sterne
1
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
podman-deployment
description
Podman Compose deployment patterns for crypto-scout-collector containerization with TimescaleDB and automated backups Use when this capability is needed.
metadata
{"author":"akarazhev"}
## What I Do Guide containerized deployment of crypto-scout-collector with Podman, including TimescaleDB with automated backups and RabbitMQ Streams integration. ## Container Services ### crypto-scout-collector Container - **Image**: `crypto-scout-collector:0.0.1` - **Base**: `eclipse-temurin:25-jre-alpine` - **User**: UID/GID `10001` (non-root) - **Port**: `8081` (health endpoint) - **Network**: `crypto-scout-bridge` - **Dependencies**: TimescaleDB, RabbitMQ ### TimescaleDB Container - **Image**: `timescale/timescaledb:latest-pg17` - **Service**: `crypto-scout-collector-db` - **Port**: `5432` - **Data**: `./data/postgresql` - **Init Scripts**: Mounted from `./script/` to `/docker-entrypoint-initdb.d/` - `00-init.sql` - extensions, schema, stream_offsets table - `01_bybit_spot_tables.sql` - spot market tables - `02_bybit_linear_tables.sql` - linear market tables - `03_crypto_scout_tables.sql` - CMC and risk tables - `04_btc_usd_daily_inserts.sql` - historical daily data - `05_btc_usd_weekly_inserts.sql` - historical weekly data - `06_cmc_fgi_inserts.sql` - CMC FGI historical data - `07_alternative_fgi_inserts.sql` - Alternative FGI data ### Backup Sidecar Container - **Image**: `prodrigestivill/postgres-backup-local:latest` - **Service**: `crypto-scout-collector-backup` - **Output**: `./backups` - **Schedule**: Configurable via env file ### RabbitMQ (external dependency) - **Streams Port**: `5552` - **AMQP Port**: `5672` - **Management**: `15672` - **Streams**: `bybit-stream`, `crypto-scout-stream` - **Queues**: `collector-queue`, `chatbot-queue` ## Container Build & Run ```bash # Build shaded JAR (required before building image) mvn -q -DskipTests package # Create network (once) ./script/network.sh # Prepare secrets cp secret/timescaledb.env.example secret/timescaledb.env cp secret/postgres-backup.env.example secret/postgres-backup.env cp secret/collector.env.example secret/collector.env chmod 600 secret/*.env # Edit secrets with your values $EDITOR secret/timescaledb.env $EDITOR secret/collector.env # Build and start all services podman-compose -f podman-compose.yml up -d # Check health curl -s http://localhost:8081/health # View logs podman logs -f crypto-scout-collector ``` ## Environment Configuration ### Required Secrets **secret/timescaledb.env**: ```env POSTGRES_DB=crypto_scout POSTGRES_USER=crypto_scout_db POSTGRES_PASSWORD=your_secure_password ``` **secret/collector.env**: ```env SERVER_PORT=8081 AMQP_RABBITMQ_HOST=host.containers.internal AMQP_RABBITMQ_PORT=5672 AMQP_STREAM_PORT=5552 AMQP_RABBITMQ_USERNAME=crypto_scout_mq AMQP_RABBITMQ_PASSWORD=your_mq_password JDBC_DATASOURCE_URL=jdbc:postgresql://crypto-scout-collector-db:5432/crypto_scout JDBC_DATASOURCE_USERNAME=crypto_scout_db JDBC_DATASOURCE_PASSWORD=your_db_password ``` ## Compose Hardening The `podman-compose.yml` includes production hardening: - `init: true` - proper signal handling - `pids_limit: 256` - process limit - `read_only` rootfs with `tmpfs: /tmp` - `cap_drop: ALL` - drop all capabilities - `security_opt: no-new-privileges=true` - `cpus: 0.5`, `mem_limit: 256m` - `restart: unless-stopped` - healthcheck with `start_period: 30s` ## Database Initialization ### Fresh Installation 1. Ensure `./data/postgresql` is empty 2. Start containers - init scripts run automatically 3. Verify: `podman exec crypto-scout-collector-db psql -U crypto_scout_db -c "\dt crypto_scout.*"` ### Existing Database For already-initialized databases, apply scripts manually: ```bash podman exec -i crypto-scout-collector-db psql -U crypto_scout_db -d crypto_scout < script/bybit_spot_tables.sql podman exec -i crypto-scout-collector-db psql -U crypto_scout_db -d crypto_scout < script/bybit_linear_tables.sql podman exec -i crypto-scout-collector-db psql -U crypto_scout_db -d crypto_scout < script/crypto_scout_tables.sql ``` ## Backup and Restore ### Automated Backups Backups run on schedule defined in `secret/postgres-backup.env`: ```env POSTGRES_BACKUP_SCHEDULE=@daily POSTGRES_BACKUP_KEEP_DAYS=7 POSTGRES_BACKUP_KEEP_WEEKS=4 POSTGRES_BACKUP_KEEP_MONTHS=6 ``` ### Manual Restore ```bash # From custom format dump pg_restore -h localhost -p 5432 -U crypto_scout_db -d crypto_scout < backups/crypto_scout-YYYYMMDD.dump # From SQL file psql -h localhost -p 5432 -U crypto_scout_db -d crypto_scout < backups/crypto_scout-YYYYMMDD.sql ``` ## Running the Service Locally ```bash # Prerequisites: RabbitMQ and TimescaleDB running # Set environment variables export AMQP_RABBITMQ_PASSWORD=your_mq_password export JDBC_DATASOURCE_PASSWORD=your_db_password # Run the app java -jar target/crypto-scout-collector-0.0.1.jar # Health check curl -s http://localhost:8081/health ``` ## Troubleshooting ### Container not starting - Verify Podman: `podman --version` - Check logs: `podman logs crypto-scout-collector` - Verify network: `podman network inspect crypto-scout-bridge` ### Database connection errors - Check TimescaleDB health: `podman exec crypto-scout-collector-db pg_isready` - Verify credentials in `secret/collector.env` - Check network connectivity between containers ### RabbitMQ Streams not reachable - Confirm port 5552 is accessible - For host RabbitMQ: `AMQP_RABBITMQ_HOST=host.containers.internal` - Verify Streams plugin is enabled ### Health check failing - Check database connectivity - Verify RabbitMQ credentials - Review application logs: `podman logs crypto-scout-collector` ### Init scripts not applied - Data directory must be empty on first run - Re-initialize: `rm -rf ./data/postgresql` and restart ## When to Use Me Use this skill when: - Building and deploying the container image - Configuring Podman Compose for production - Setting up TimescaleDB with automated backups - Troubleshooting container or connectivity issues - Managing database initialization and migrations - Setting up CI/CD pipelines - Managing secrets and environment configuration - Performing backup and restore operations --- > Converted and distributed by [TomeVault](https://tomevault.io/claim/akarazhev) — claim your Tome and manage your conversions. <!-- tomevault:4.0:skill_md:2026-04-15 -->
Auf GitHub ansehen