Explorar el Código

feat: docker-compose

thesimplekid hace 3 meses
padre
commit
f25e149226

+ 1 - 1
.helix/languages.toml

@@ -1,2 +1,2 @@
 [language-server.rust-analyzer.config]
-cargo = { features = ["wallet", "mint", "swagger"] }
+cargo = { features = ["wallet", "mint", "swagger", "redis"] }

+ 1 - 1
Dockerfile

@@ -10,7 +10,7 @@ COPY Cargo.toml ./Cargo.toml
 COPY crates ./crates
 
 # Start the Nix daemon and develop the environment
-RUN nix develop --extra-experimental-features nix-command --extra-experimental-features flakes --command cargo build --release --bin cdk-mintd
+RUN nix develop --extra-experimental-features nix-command --extra-experimental-features flakes --command cargo build --release --bin cdk-mintd --features redis
 
 # Create a runtime stage
 FROM debian:bookworm-slim

+ 76 - 0
crates/cdk-axum/src/cache/config.rs

@@ -1,5 +1,15 @@
 use serde::{Deserialize, Serialize};
 
+pub const ENV_CDK_MINTD_CACHE_BACKEND: &str = "CDK_MINTD_CACHE_BACKEND";
+
+#[cfg(feature = "redis")]
+pub const ENV_CDK_MINTD_CACHE_REDIS_URL: &str = "CDK_MINTD_CACHE_REDIS_URL";
+#[cfg(feature = "redis")]
+pub const ENV_CDK_MINTD_CACHE_REDIS_KEY_PREFIX: &str = "CDK_MINTD_CACHE_REDIS_KEY_PREFIX";
+
+pub const ENV_CDK_MINTD_CACHE_TTI: &str = "CDK_MINTD_CACHE_TTI";
+pub const ENV_CDK_MINTD_CACHE_TTL: &str = "CDK_MINTD_CACHE_TTL";
+
 #[derive(Debug, Clone, Serialize, Deserialize, Default)]
 #[serde(tag = "backend")]
 #[serde(rename_all = "lowercase")]
@@ -10,6 +20,28 @@ pub enum Backend {
     Redis(super::backend::RedisConfig),
 }
 
+impl Backend {
+    pub fn from_env_str(backend_str: &str) -> Option<Self> {
+        match backend_str.to_lowercase().as_str() {
+            "memory" => Some(Self::Memory),
+            #[cfg(feature = "redis")]
+            "redis" => {
+                // Get Redis configuration from environment
+                let connection_string = std::env::var(ENV_CDK_MINTD_CACHE_REDIS_URL)
+                    .unwrap_or_else(|_| "redis://127.0.0.1:6379".to_string());
+
+                let key_prefix = std::env::var(ENV_CDK_MINTD_CACHE_REDIS_KEY_PREFIX).ok();
+
+                Some(Self::Redis(super::backend::RedisConfig {
+                    connection_string,
+                    key_prefix,
+                }))
+            }
+            _ => None,
+        }
+    }
+}
+
 /// Cache configuration.
 #[derive(Debug, Clone, Serialize, Deserialize, Default)]
 pub struct Config {
@@ -24,3 +56,47 @@ pub struct Config {
     /// Time for the cache entries to be idle.
     pub tti: Option<u64>,
 }
+
+impl Config {
+    /// Config from env
+    pub fn from_env(mut self) -> Self {
+        use std::env;
+
+        // Parse backend
+        if let Ok(backend_str) = env::var(ENV_CDK_MINTD_CACHE_BACKEND) {
+            if let Some(backend) = Backend::from_env_str(&backend_str) {
+                self.backend = backend;
+
+                // If Redis backend is selected, parse Redis configuration
+                #[cfg(feature = "redis")]
+                if matches!(self.backend, Backend::Redis(_)) {
+                    let connection_string = env::var(ENV_CDK_MINTD_CACHE_REDIS_URL)
+                        .unwrap_or_else(|_| "redis://127.0.0.1:6379".to_string());
+
+                    let key_prefix = env::var(ENV_CDK_MINTD_CACHE_REDIS_KEY_PREFIX).ok();
+
+                    self.backend = Backend::Redis(super::backend::RedisConfig {
+                        connection_string,
+                        key_prefix,
+                    });
+                }
+            }
+        }
+
+        // Parse TTL
+        if let Ok(ttl_str) = env::var(ENV_CDK_MINTD_CACHE_TTL) {
+            if let Ok(ttl) = ttl_str.parse() {
+                self.ttl = Some(ttl);
+            }
+        }
+
+        // Parse TTI
+        if let Ok(tti_str) = env::var(ENV_CDK_MINTD_CACHE_TTI) {
+            if let Ok(tti) = tti_str.parse() {
+                self.tti = Some(tti);
+            }
+        }
+
+        self
+    }
+}

+ 2 - 0
crates/cdk-mintd/src/env_vars.rs

@@ -151,6 +151,8 @@ impl Info {
             }
         }
 
+        self.http_cache = self.http_cache.from_env();
+
         self
     }
 }

+ 17 - 0
docker-compose.yaml

@@ -13,4 +13,21 @@ services:
       - CDK_MINTD_LISTEN_PORT=8085
       - CDK_MINTD_MNEMONIC=
       - CDK_MINTD_DATABASE=redb
+      - CDK_MINTD_CACHE_BACKEND=memory
+      # - CDK_MINTD_CACHE_REDIS_URL=redis://redis:6379 
+      # - CDK_MINTD_CACHE_REDIS_KEY_PREFIX=cdk-mintd
     command: ["cdk-mintd"]
+    # depends_on:
+    #   - redis
+
+#   redis:
+#     image: redis:7-alpine
+#     container_name: mint_redis
+#     ports:
+#       - "6379:6379"
+#     volumes:
+#       - redis_data:/data
+#     command: redis-server --save 60 1 --loglevel warning
+
+# volumes:
+#    redis_data: