diff --git a/react-java-mysql/backend/src/main/java/com/company/project/configuration/DockerSecretsProcessor.java b/react-java-mysql/backend/src/main/java/com/company/project/configuration/DockerSecretsProcessor.java new file mode 100644 index 0000000..a1858f2 --- /dev/null +++ b/react-java-mysql/backend/src/main/java/com/company/project/configuration/DockerSecretsProcessor.java @@ -0,0 +1,30 @@ +package com.company.project.configuration; + +import java.io.IOException; +import java.nio.charset.Charset; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.env.EnvironmentPostProcessor; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; +import org.springframework.util.StreamUtils; + +/** + * Read property from docker secret file. + */ +public class DockerSecretsProcessor implements EnvironmentPostProcessor { + + @Override + public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { + Resource resource = new FileSystemResource("/run/secrets/db-password"); + if (resource.exists() && System.getProperty("MYSQL_PASSWORD") == null) { + try { + String dbPassword = StreamUtils.copyToString(resource.getInputStream(), Charset.defaultCharset()); + System.setProperty("MYSQL_PASSWORD", dbPassword); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } +} diff --git a/react-java-mysql/backend/src/main/resources/META-INF/spring.factories b/react-java-mysql/backend/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..e585c2f --- /dev/null +++ b/react-java-mysql/backend/src/main/resources/META-INF/spring.factories @@ -0,0 +1 @@ +org.springframework.boot.env.EnvironmentPostProcessor=com.company.project.configuration.DockerSecretsProcessor diff --git a/react-java-mysql/docker-compose.yaml b/react-java-mysql/docker-compose.yaml index 1495c99..1eea061 100644 --- a/react-java-mysql/docker-compose.yaml +++ b/react-java-mysql/docker-compose.yaml @@ -3,6 +3,8 @@ services: backend: build: backend restart: always + secrets: + - db-password environment: MYSQL_HOST: db networks: