diff --git a/SQLBackupToCOS/BackupService.cs b/SQLBackupToCOS/BackupService.cs index 968753f..550a07b 100644 --- a/SQLBackupToCOS/BackupService.cs +++ b/SQLBackupToCOS/BackupService.cs @@ -42,7 +42,19 @@ public class BackupService(ILogger logger, IConfiguration config, var url = _config.GetValue("Database:Host") ?? "172.17.0.1"; var user = _config.GetValue("Database:User") ?? "backupUser"; var password = _config.GetValue("Database:Password") ?? ""; - var databases = _config.GetSection("Database:Databases").Get() ?? ["my_database"]; + + // 支持两种格式: + // 1. 数组格式(appsettings.json): ["db1", "db2"] + // 2. 逗号分隔格式(环境变量): "db1,db2" + var databases = _config.GetSection("Database:Databases").Get(); + if (databases == null || databases.Length == 0) + { + // 尝试读取逗号分隔的字符串 + var databasesStr = _config.GetValue("Database:Databases"); + databases = string.IsNullOrWhiteSpace(databasesStr) + ? ["my_database"] + : databasesStr.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); + } var timestamp = DateTime.Now.ToString("yyyyMMddHHmmss"); var dumpDir = $"/data/dumps/dump-{timestamp}"; diff --git a/SQLBackupToCOS/Dockerfile b/SQLBackupToCOS/Dockerfile index 7f7c50e..a6b9c81 100644 --- a/SQLBackupToCOS/Dockerfile +++ b/SQLBackupToCOS/Dockerfile @@ -28,6 +28,5 @@ RUN dotnet publish "./SQLBackupToCOS.csproj" -c $BUILD_CONFIGURATION -o /app/pub FROM base AS final WORKDIR /app ENV TZ="Asia/Shanghai" -RUN apt update && apt install -y mysql-client && mkdir /data && chmod 777 /data COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "SQLBackupToCOS.dll"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 962d00f..3dc6abd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,3 +4,13 @@ services: build: context: . dockerfile: SQLBackupToCOS/Dockerfile + environment: + Database__Host: SQLHOST + Database__User: SQLUSER + Database__Password: StrongPassword! + Database__Databases: DB1,DB2 + COS__BucketName: BUCKETNAME + COS__Region: BUCKETREGION + COS__SecretId: SECRETID + COS__SecretKey: SECRETKEY + COS__FilePath: PATH