如何解决Spring Boot无法读取docker-compose环境变量
我这里有一个“无聊”的问题。让我解释一下...
我正在尝试从我的docker-compose的Application.properties中读取一些“环境变量”。
虽然,我在容器中正确创建了env的变量(当我检查容器时,我可以看到它们)没有从spring boot应用程序中读取。
有点儿,这些“由docker组成的环境变量”看起来像“不可访问”。
我正在测试();因此,我试图在我的Spring应用程序中获取一个环境变量,结果是'null',例如:
@Slf4j
@SpringBootApplication(exclude = R2dbcAutoConfiguration.class)
public class AppDriver {
public static void main(String[] args) {
System.out.println( "container variables >>>>> " + System.getenv("MASTER_URL") );
SpringApplication.run(AppDriver.class,args);
}
日志为:
conteiner变量>>>>> null
以下,它们是我的docker-compose(我在docker-compose [暂时]中没有任何Spring引导服务):
version: "3.5"
services:
tenant1:
image: postgres
ports:
- "5432:5432"
restart: always
environment:
POSTGRES_PASSWORD: password
POSTGRES_DB: tenant1
POSTGRES_USER: user
volumes:
- ./data/tenant1:/var/lib/postgresql
MysqL:
image: MysqL:5.7
ports:
- "3306:3306"
environment:
MASTER_URL: r2dbc:MysqL://user:password@localhost/master
MysqL_ROOT_PASSWORD: mysecret
MysqL_USER: user
MysqL_PASSWORD: password
MysqL_DATABASE: master
我的Application.properties:
logging.level.com.example=DEBUG
logging.level.io.r2dbc=DEBUG
master.url = ${MASTER_URL}
最后,我的Java文件:
@Configuration
//@ConfigurationProperties(prefix = "master")
@EnableR2dbcRepositories(entityOperationsRef = "masterEntityTemplate")
public class MasterConfig {
@Value("${master.url}")
private String url;
@Bean
@Qualifier(value = "masterConnectionFactory")
public ConnectionFactory masterConnectionFactory() {
System.out.println(">>>>>>>>>>>" + url);
return ConnectionFactories.get(url);
//.get("r2dbc:MysqL://user:password@localhost/master");
}
原因:java.lang.IllegalArgumentException:无法解析值“ $ {MASTER_URL}”中的占位符“ MASTER_URL”
有人知道如何解决这个问题吗?
非常感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。