From 8baa24295a55fa9c13f15ad79aed827fc71f039b Mon Sep 17 00:00:00 2001 From: Tommaso Borgato Date: Thu, 7 Nov 2024 11:41:07 +0100 Subject: [PATCH] Differentiate data directory from mount point for PostgreSQL official image --- .../main/java/cz/xtf/builder/db/PostgreSQL.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/builder/src/main/java/cz/xtf/builder/db/PostgreSQL.java b/builder/src/main/java/cz/xtf/builder/db/PostgreSQL.java index 18e4b9bd..040b3f86 100644 --- a/builder/src/main/java/cz/xtf/builder/db/PostgreSQL.java +++ b/builder/src/main/java/cz/xtf/builder/db/PostgreSQL.java @@ -17,7 +17,8 @@ public class PostgreSQL extends AbstractSQLDatabase { private static final String DEFAULT_DATA_DIR = "/var/lib/pgsql/data"; // data directory for the Official Docker PostgreSQL image - private static final String OFFICIAL_IMAGE_DATA_DIR = "/var/lib/postgresql/data"; + private static final String OFFICIAL_IMAGE_DATA_DIR = "/var/lib/postgresql"; + private static final String OFFICIAL_IMAGE_PGDATA_DIR = "/var/lib/postgresql/data"; // env variables names for the Red Hat image private static final String DEFAULT_POSTGRESQL_USER_ENV_VAR = "POSTGRESQL_USER"; @@ -70,6 +71,7 @@ public class PostgreSQL extends AbstractSQLDatabase { private boolean isOfficialImage; private String dataDir; private String serviceAccount; + private String pgData; public PostgreSQL(PostgreSQLBuilder postgreSQLBuilder) { super( @@ -113,6 +115,9 @@ public PostgreSQL(PostgreSQLBuilder postgreSQLBuilder) { ? (postgreSQLBuilder.isOfficialImage ? OFFICIAL_IMAGE_DATA_DIR : DEFAULT_DATA_DIR) : postgreSQLBuilder.dataDir; this.serviceAccount = postgreSQLBuilder.serviceAccount; + this.pgData = (postgreSQLBuilder.pgData == null || postgreSQLBuilder.pgData.isEmpty()) + ? (postgreSQLBuilder.isOfficialImage ? OFFICIAL_IMAGE_PGDATA_DIR : DEFAULT_DATA_DIR) + : postgreSQLBuilder.pgData; } public void setPostgresqlUserEnvVar(String postgresqlUserEnvVar) { @@ -176,7 +181,7 @@ public Map getImageVariables() { vars.put(OFFICIAL_IMAGE_POSTGRESQL_USER_ENV_VAR, getUsername()); vars.put(OFFICIAL_IMAGE_POSTGRES_PASSWORD_ENV_VAR, getPassword()); vars.put(OFFICIAL_IMAGE_POSTGRESQL_DATABASE_ENV_VAR, getDbName()); - vars.put("PGDATA", this.dataDir); + vars.put("PGDATA", this.pgData); } else { vars = super.getImageVariables(); vars.putAll(this.vars); @@ -211,6 +216,7 @@ public static class PostgreSQLBuilder { private Supplier envVarPrefix; private boolean isOfficialImage = false; private String serviceAccount; + private String pgData; public PostgreSQLBuilder withArgs(List args) { this.args = args; @@ -292,6 +298,11 @@ public PostgreSQLBuilder withServiceAccount(String serviceAccount) { return this; } + public PostgreSQLBuilder withPgData(String pgData) { + this.pgData = pgData; + return this; + } + public PostgreSQL build() { PostgreSQL postgreSQL = new PostgreSQL(this); return postgreSQL;