Skip to content

Commit 4ba9335

Browse files
committed
#2270 adding postgres to Docker
1 parent 1a73af7 commit 4ba9335

File tree

7 files changed

+26
-114
lines changed

7 files changed

+26
-114
lines changed

exampleYmlFiles/docker-compose-latest-security.yml

+19-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ services:
66
resources:
77
limits:
88
memory: 4G
9+
depends_on:
10+
- db
911
healthcheck:
1012
test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -q 'Please sign in'"]
1113
interval: 5s
@@ -14,9 +16,9 @@ services:
1416
ports:
1517
- "8080:8080"
1618
volumes:
17-
- /stirling/latest/data:/usr/share/tessdata:rw
18-
- /stirling/latest/config:/configs:rw
19-
- /stirling/latest/logs:/logs:rw
19+
- /Users/darioghunneyware/stirling/latest/data:/usr/share/tessdata:rw
20+
- /Users/darioghunneyware/stirling/latest/config:/configs:rw
21+
- /Users/darioghunneyware/stirling/latest/logs:/logs:rw
2022
environment:
2123
DOCKER_ENABLE_SECURITY: "true"
2224
SECURITY_ENABLELOGIN: "true"
@@ -30,4 +32,18 @@ services:
3032
SYSTEM_MAXFILESIZE: "100"
3133
METRICS_ENABLED: "true"
3234
SYSTEM_GOOGLEVISIBILITY: "true"
35+
SPRING_DATASOURCE_URL: "jdbc:postgresql://db:5432/stirling_pdf"
36+
SPRING_DATASOURCE_USERNAME: "admin"
37+
SPRING_DATASOURCE_PASSWORD: "stirling"
38+
SPRING_JPA_HIBERNATE_DDL_AUTO: "update"
3339
restart: on-failure:5
40+
41+
db:
42+
image: 'postgres:17.2-alpine'
43+
container_name: db
44+
ports:
45+
- "5432:5432"
46+
environment:
47+
POSTGRES_DB: "stirling_pdf"
48+
POSTGRES_USER: "admin"
49+
POSTGRES_PASSWORD: "stirling"

src/main/java/stirling/software/SPDF/config/interfaces/DatabaseInterface.java

-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
import stirling.software.SPDF.utils.FileInfo;
77

88
public interface DatabaseInterface {
9-
void setAdminUser();
10-
119
void exportDatabase() throws IOException;
1210

1311
List<FileInfo> getBackupList();

src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java

-7
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
@Component
1717
public class InitialSecuritySetup {
1818

19-
public static final String POSTGRES_ENV = "postgres";
20-
2119
@Autowired private UserService userService;
2220

2321
@Autowired private ApplicationProperties applicationProperties;
@@ -26,11 +24,6 @@ public class InitialSecuritySetup {
2624

2725
@PostConstruct
2826
public void init() {
29-
if (applicationProperties.getSystem().getSpringProfilesActive().equals(POSTGRES_ENV)) {
30-
log.debug("Postgres configuration settings detected. Creating admin user");
31-
databaseService.setAdminUser();
32-
}
33-
3427
try {
3528
if (!userService.hasUsers()) {
3629
initializeAdminUser();

src/main/java/stirling/software/SPDF/config/security/database/DatabaseService.java

+1-26
Original file line numberDiff line numberDiff line change
@@ -36,24 +36,9 @@ public class DatabaseService implements DatabaseInterface {
3636
public static final String BACKUP_PREFIX = "backup_";
3737
public static final String SQL_SUFFIX = ".sql";
3838
private static final Path BACKUP_PATH = Paths.get("configs/db/backup/");
39-
private static final Path PG_ADMIN_SCRIPT_PATH =
40-
Paths.get("src/main/resources/setup_pg_admin_user.sql");
4139

4240
@Autowired private DatabaseConfig databaseConfig;
4341

44-
@Override
45-
public void setAdminUser() {
46-
try (Connection connection = databaseConfig.connection();
47-
Statement statement = connection.createStatement()) {
48-
String script = Files.readString(PG_ADMIN_SCRIPT_PATH);
49-
statement.execute(script);
50-
} catch (SQLException | IOException e) {
51-
log.error("Error: Failed to create admin user for database", e);
52-
}
53-
54-
log.info("Created admin user for database");
55-
}
56-
5742
@Override
5843
public List<FileInfo> getBackupList() {
5944
List<FileInfo> backupFiles = new ArrayList<>();
@@ -91,7 +76,7 @@ public List<FileInfo> getBackupList() {
9176
}
9277

9378
// Imports a database backup from the specified file.
94-
public boolean importDatabaseFromUI(String fileName) throws IOException {
79+
public boolean importDatabaseFromUI(String fileName) {
9580
try {
9681
importDatabaseFromUI(getBackupFilePath(fileName));
9782
return true;
@@ -214,16 +199,6 @@ private void executeDatabaseScript(Path scriptPath) {
214199
}
215200
}
216201

217-
private void ensureBackupDirectoryExists() {
218-
if (Files.notExists(BACKUP_PATH)) {
219-
try {
220-
Files.createDirectories(BACKUP_PATH);
221-
} catch (IOException e) {
222-
log.error("Error creating directories: {}", e.getMessage());
223-
}
224-
}
225-
}
226-
227202
private boolean isValidFileName(String fileName) {
228203
// Check for invalid characters or sequences
229204
return fileName != null

src/main/resources/setup_pg_admin_user.sql

-26
This file was deleted.

src/test/java/stirling/software/SPDF/config/security/InitialSecuritySetupTest.java

+6-12
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package stirling.software.SPDF.config.security;
22

3-
import org.junit.jupiter.api.Assertions;
4-
import org.junit.jupiter.api.BeforeEach;
3+
import java.io.IOException;
4+
import java.util.Optional;
55
import org.junit.jupiter.api.Test;
66
import org.junit.jupiter.api.extension.ExtendWith;
77
import org.mockito.InjectMocks;
@@ -10,12 +10,10 @@
1010
import stirling.software.SPDF.config.security.database.DatabaseService;
1111
import stirling.software.SPDF.model.ApplicationProperties;
1212
import stirling.software.SPDF.model.User;
13-
14-
import java.io.IOException;
15-
import java.util.Optional;
16-
17-
import static org.junit.jupiter.api.Assertions.*;
18-
import static org.mockito.Mockito.*;
13+
import static org.mockito.Mockito.anyString;
14+
import static org.mockito.Mockito.mock;
15+
import static org.mockito.Mockito.verify;
16+
import static org.mockito.Mockito.when;
1917

2018
@ExtendWith(MockitoExtension.class)
2119
class InitialSecuritySetupTest {
@@ -36,14 +34,10 @@ class InitialSecuritySetupTest {
3634
void testInit() throws IOException {
3735
String username = "admin";
3836
String password = "stirling";
39-
ApplicationProperties.System system = mock(ApplicationProperties.System.class);
4037
ApplicationProperties.Security security = mock(ApplicationProperties.Security.class);
4138
ApplicationProperties.Security.InitialLogin initialLogin = mock(ApplicationProperties.Security.InitialLogin.class);
4239
Optional<User> user = Optional.of(mock(User.class));
4340

44-
when(applicationProperties.getSystem()).thenReturn(system);
45-
when(system.getSpringProfilesActive()).thenReturn("postgres");
46-
doNothing().when(databaseService).setAdminUser();
4741
when(userService.hasUsers()).thenReturn(false);
4842
when(applicationProperties.getSecurity()).thenReturn(security);
4943
when(security.getInitialLogin()).thenReturn(initialLogin);

src/test/java/stirling/software/SPDF/config/security/database/DatabaseServiceTest.java

-38
This file was deleted.

0 commit comments

Comments
 (0)