【发布时间】:2019-02-11 03:11:15
【问题描述】:
我在 application.yml 中有一个带有 gradle 和一些环境变量的 springboot java 应用程序:
spring:
profiles: development
server:
port: 3100
database:
connectionString: mongodb://localhost:27017
---
spring:
profiles: production
server:
port: 80
database:
connectionString: prodCS
我的码头文件:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Dspring.profiles.active=development","-jar","/app.jar"]
我正在尝试在本地运行 docker,但我的环境返回 null 属性
@Configuration
public class MongoUtilities {
@Resource
public Environment env;
private static String mongoUri;
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public boolean ReadConnectionString() {
mongoUri = env.getProperty("database.connectionString");
System.out.println("Loaded connection Uri : " + mongoUri);
return true;
}
}
我之前遇到过环境变量为空的问题,但我设法修复了它。它现在可以在带有标志 --spring.profiles.active=development 的 intellij 中完美运行
我正在使用gradlew build docker 构建并使用docker run springio/my-app 启动docker
这一切都很标准,我只是这方面的初学者。
有什么想法吗?
【问题讨论】:
-
尝试将您的 docker run 命令更改为
docker run -e "SPRING_PROFILES_ACTIVE=development" springio/my-app -
试过了,它实现了与 -Dspring.profiles.active=development 相同的目标,所以没有任何改变。我的环境有价值,但我的问题是每次我写 env.getProperty() 我都会得到空值
标签: java docker spring-boot intellij-idea