Skip to content

Commit 9432736

Browse files
authored
Merge pull request #74 from AlexandreVassard/docker-env-variables
Use environment variables instead of server.ini by default
2 parents c39bd11 + a00bacd commit 9432736

File tree

5 files changed

+51
-90
lines changed

5 files changed

+51
-90
lines changed

Dockerfile

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
FROM alpine:3.20 AS base
66

77
# Add OpenJDK17
8-
RUN apk add openjdk17=17.0.12_p7-r0
8+
RUN apk add --no-cache openjdk17=17.0.12_p7-r0
99

1010
# Uses /kepler directory
1111
WORKDIR /kepler
@@ -17,16 +17,16 @@ WORKDIR /kepler
1717
FROM base AS build
1818

1919
# Add unzip
20-
RUN apk add unzip=6.0-r14
20+
RUN apk add --no-cache unzip=6.0-r14
2121

2222
# Copy every files/folders that are not in .dockerignore
2323
COPY . .
2424

2525
# Convert CRLF to LF executable files (failing build for Windows without this)
26-
RUN sed -i 's/\r$//' gradlew tools/scripts/run.sh entrypoint.sh
26+
RUN sed -i 's/\r$//' gradlew tools/scripts/run.sh
2727

28-
# Make gradlew, entrypoint.sh and run.sh executable
29-
RUN chmod +x gradlew entrypoint.sh tools/scripts/run.sh
28+
# Make gradlew and run.sh executable
29+
RUN chmod +x gradlew tools/scripts/run.sh
3030

3131
# Run gradle build
3232
RUN ./gradlew distZip
@@ -39,7 +39,6 @@ RUN rm -rf ./release/Kepler-Server/bin && \
3939
mkdir -p ./build/lib && \
4040
mv ./release/Kepler-Server/lib/Kepler-Server.jar ./build/kepler.jar && \
4141
mv ./release/Kepler-Server/lib/* ./build/lib && \
42-
mv ./entrypoint.sh ./build/entrypoint.sh && \
4342
cp tools/scripts/run.sh ./build/
4443

4544
####################
@@ -51,6 +50,4 @@ FROM base AS production
5150
# Copy builded Kepler server
5251
COPY --from=build /kepler/build ./
5352

54-
ENTRYPOINT [ "sh", "entrypoint.sh" ]
55-
5653
CMD [ "sh", "run.sh" ]

Kepler-Server/src/main/java/org/alexdev/kepler/dao/Storage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static boolean connect() {
6666

6767
storage = new Storage(ServerConfiguration.getString("mysql.hostname"),
6868
ServerConfiguration.getInteger("mysql.port"),
69-
ServerConfiguration.getString("mysql.username"),
69+
ServerConfiguration.getString("mysql.user"),
7070
ServerConfiguration.getString("mysql.password"),
7171
ServerConfiguration.getString("mysql.database"));
7272

Kepler-Server/src/main/java/org/alexdev/kepler/util/config/ServerConfiguration.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,38 @@ public static boolean getBoolean(String key) {
4848

4949
}
5050

51+
/**
52+
* Helper method to get value from environment variable if exists
53+
* Converts the key by replacing dots with underscores and converting to uppercase
54+
* to match common environment variable naming conventions.
55+
*
56+
* @param key the key to use
57+
* @return value from environment variable or null if not found
58+
*/
59+
private static String getEnvOrNull(String key) {
60+
String envKey = key.replace('.', '_').toUpperCase();
61+
String envValue = System.getenv(envKey);
62+
63+
if(envValue != null && !envValue.isEmpty()) {
64+
return envValue;
65+
}
66+
67+
return null;
68+
}
69+
5170
/**
5271
* Get value from configuration
5372
*
5473
* @param key the key to use
5574
* @return value
5675
*/
5776
public static String getString(String key) {
77+
String envValue = getEnvOrNull(key);
78+
79+
if(envValue != null) {
80+
return envValue;
81+
}
82+
5883
return config.getOrDefault(key, key);
5984
}
6085

@@ -65,6 +90,12 @@ public static String getString(String key) {
6590
* @return value
6691
*/
6792
public static String getStringOrDefault(String key, String value) {
93+
String envValue = getEnvOrNull(key);
94+
95+
if(envValue != null) {
96+
return envValue;
97+
}
98+
6899
return config.getOrDefault(key, value);
69100
}
70101

@@ -75,6 +106,18 @@ public static String getStringOrDefault(String key, String value) {
75106
* @return value as int
76107
*/
77108
public static int getInteger(String key) {
109+
String envValue = getEnvOrNull(key);
110+
111+
if(envValue != null) {
112+
try {
113+
return Integer.parseInt(envValue);
114+
} catch (NumberFormatException e) {
115+
// Handle the case where the env value is not a valid integer
116+
System.err.println("Environment variable for key " + key + " is not a valid integer: " + envValue);
117+
// Using default value below
118+
}
119+
}
120+
78121
return Integer.parseInt(config.getOrDefault(key, "0"));
79122
}
80123

Kepler-Server/src/main/java/org/alexdev/kepler/util/config/writer/DefaultConfigWriter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public Map<String, String> setConfigurationDefaults() {
2424

2525
config.put("mysql.hostname", "127.0.0.1");
2626
config.put("mysql.port", "3306");
27-
config.put("mysql.username", "kepler");
27+
config.put("mysql.user", "kepler");
2828
config.put("mysql.password", "verysecret");
2929
config.put("mysql.database", "kepler");
3030

@@ -49,7 +49,7 @@ public void setConfigurationData(Map<String, String> config, PrintWriter writer)
4949
writer.println("[Database]");
5050
writer.println("mysql.hostname=" + config.get("mysql.hostname"));
5151
writer.println("mysql.port=" + config.get("mysql.port"));
52-
writer.println("mysql.username=" + config.get("mysql.username"));
52+
writer.println("mysql.user=" + config.get("mysql.user"));
5353
writer.println("mysql.password=" + config.get("mysql.password"));
5454
writer.println("mysql.database=" + config.get("mysql.database"));
5555
writer.println("");

entrypoint.sh

Lines changed: 0 additions & 79 deletions
This file was deleted.

0 commit comments

Comments
 (0)