Interface DatabaseSpec

All Known Implementing Classes:
GitLabApplicationSpec, GrafanaApplicationSpec, HarborApplicationSpec, MattermostApplicationSpec, MattermostTeamApplicationSpec, MetabaseApplicationSpec, SupersetApplicationSpec

public interface DatabaseSpec
Database specification interface for applications requiring external databases.

Applications implementing this interface can request managed RDS databases instead of using embedded file-based databases.

Supported Engines:

  • PostgreSQL (postgres)
  • MySQL (mysql)
  • MariaDB (mariadb)
  • Aurora PostgreSQL (aurora-postgresql)
  • Aurora MySQL (aurora-mysql)

Example Usage:


 public class MetabaseApplicationSpec implements ApplicationSpec, DatabaseSpec {
     @Override
     public DatabaseRequirement databaseRequirement() {
         return DatabaseRequirement.optional("postgres", "15");
     }

     @Override
     public Map<String, String> containerEnvironmentVariables(
             String fqdn, boolean sslEnabled, String authMode, DatabaseConnection dbConn) {
         if (dbConn != null) {
             return Map.of(
                 "MB_DB_TYPE", "postgres",
                 "MB_DB_HOST", dbConn.endpoint(),
                 "MB_DB_PORT", String.valueOf(dbConn.port()),
                 "MB_DB_DBNAME", dbConn.databaseName(),
                 "MB_DB_USER", dbConn.username(),
                 "MB_DB_PASS", dbConn.passwordSecretArn()
             );
         } else {
             // Fallback to H2 embedded
             return Map.of("MB_DB_TYPE", "h2");
         }
     }
 }
 
Since:
3.0.0
  • Method Details

    • databaseRequirement

      DatabaseSpec.DatabaseRequirement databaseRequirement()
      Database requirement for this application.
      Returns:
      database requirement (required, optional, or none)
    • databaseInitScripts

      default List<String> databaseInitScripts()
      Database initialization SQL scripts to run after creation.
      Returns:
      list of SQL scripts, or empty list
    • databaseParameters

      default Map<String,String> databaseParameters()
      Database configuration overrides for specific engines.

      Example PostgreSQL parameters:

      • max_connections - 200
      • shared_buffers - {DBInstanceClassMemory/4096}
      • work_mem - 16MB
      • log_statement - all
      Returns:
      map of parameter group settings
    • backupRetentionDays

      default int backupRetentionDays()
      Database backup retention requirements.
      Returns:
      backup retention days (1-35), default 7
    • requiresReadReplicas

      default boolean requiresReadReplicas()
      Whether this application requires read replicas for scaling.
      Returns:
      true if read replicas should be created
    • readReplicaCount

      default int readReplicaCount()
      Number of read replicas for production.
      Returns:
      read replica count (0-5), default 0