diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000000..bdf07d7883 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1,2 @@ +docker-db-data/* +docker-pg-db-data/* \ No newline at end of file diff --git a/database/docker-db-data/.gitignore b/database/docker-db-data/.gitignore deleted file mode 100644 index e7a210ec7d..0000000000 --- a/database/docker-db-data/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -*/ -!.gitignore \ No newline at end of file diff --git a/database/postgresql/create-admin-user.sql b/database/postgres-scripts/create-db-and-admin-user.sql similarity index 87% rename from database/postgresql/create-admin-user.sql rename to database/postgres-scripts/create-db-and-admin-user.sql index 08eb0b59d5..6de094088e 100644 --- a/database/postgresql/create-admin-user.sql +++ b/database/postgres-scripts/create-db-and-admin-user.sql @@ -1,3 +1,4 @@ +CREATE DATABASE cosmic; CREATE USER cosmic_admin WITH ENCRYPTED PASSWORD 'redsnailshell'; GRANT ALL PRIVILEGES ON DATABASE cosmic TO cosmic_admin; ALTER ROLE cosmic_admin WITH CREATEROLE; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index e6861b0004..6548beb593 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,7 @@ services: build: . depends_on: - db + - pg_db ports: # Login server - "8484:8484" @@ -19,6 +20,7 @@ services: - ./wz:/opt/server/wz environment: DB_HOST: "db" + PG_DB_HOST: "pg_db" db: image: mysql:8.0.23 @@ -30,3 +32,11 @@ services: volumes: - ./database/docker-db-data:/var/lib/mysql - ./database/sql:/docker-entrypoint-initdb.d + + pg_db: + image: postgres:15.0 + environment: + POSTGRES_PASSWORD: postgres + volumes: + - ./database/docker-pg-db-data:/var/lib/postgresql/data + - ./database/postgres-scripts:/docker-entrypoint-initdb.d \ No newline at end of file diff --git a/src/main/java/database/migration/FlywayRunner.java b/src/main/java/database/migration/FlywayRunner.java index 960ffea00b..aed1633e4f 100644 --- a/src/main/java/database/migration/FlywayRunner.java +++ b/src/main/java/database/migration/FlywayRunner.java @@ -16,6 +16,8 @@ public class FlywayRunner { .dataSource(dbConfig.getJdbcUrl(), dbConfig.adminUsername(), dbConfig.adminPassword()) .schemas(dbConfig.schema()) .createSchemas(true) + .connectRetries(10) + .connectRetriesInterval(5) .load(); flyway.migrate(); } diff --git a/src/main/java/net/server/Server.java b/src/main/java/net/server/Server.java index 19e1490f11..64830194fb 100644 --- a/src/main/java/net/server/Server.java +++ b/src/main/java/net/server/Server.java @@ -935,8 +935,12 @@ public class Server { private PgDatabaseConfig readPgDbConfig() { final ServerConfig serverConfig = YamlConfig.config.server; + String pgDbHost = System.getenv("PG_DB_HOST"); + if (pgDbHost == null) { + pgDbHost = serverConfig.PG_DB_HOST; + } return new PgDatabaseConfig( - serverConfig.PG_DB_NAME, serverConfig.PG_DB_HOST, serverConfig.PG_DB_SCHEMA, + serverConfig.PG_DB_NAME, pgDbHost, serverConfig.PG_DB_SCHEMA, serverConfig.PG_DB_ADMIN_USERNAME, serverConfig.PG_DB_ADMIN_PASSWORD, serverConfig.PG_DB_USERNAME, serverConfig.PG_DB_PASSWORD, Duration.ofSeconds(serverConfig.INIT_CONNECTION_POOL_TIMEOUT)