Skip to content

Commit

Permalink
Differentiate data directory from mount point for PostgreSQL official…
Browse files Browse the repository at this point in the history
… image
  • Loading branch information
tommaso-borgato committed Nov 7, 2024
1 parent c1a60cd commit 8baa242
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions builder/src/main/java/cz/xtf/builder/db/PostgreSQL.java
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -176,7 +181,7 @@ public Map<String, String> 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);
Expand Down Expand Up @@ -211,6 +216,7 @@ public static class PostgreSQLBuilder {
private Supplier<String> envVarPrefix;
private boolean isOfficialImage = false;
private String serviceAccount;
private String pgData;

public PostgreSQLBuilder withArgs(List<String> args) {
this.args = args;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 8baa242

Please sign in to comment.