docker中的java SpringBoot环境为空
我有一个带有gradle的springboot java应用程序,应用程序中有一些环境变量。yml:
spring:
profiles: development
server:
port: 3100
database:
connectionString: mongodb://localhost:27017
---
spring:
profiles: production
server:
port: 80
database:
connectionString: prodCS
我的dockerfile:
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,但我的环境返回空属性
@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;
}
}
我以前遇到过环境变量为null的问题,但成功地解决了它。它现在在intellij中完美运行,带有标志--spring.profiles.active=development
我正在使用gradlew build docker
构建,并使用docker run springio/my-app
启动docker
这都很标准,我只是这方面的初学者
有什么想法吗
# 1 楼答案
有几种方法可以做到这一点
Dockerfile中经过的弹簧轮廓
在Docker run命令中传递Spring概要文件
DockerCompose中通过弹簧的轮廓
我已经在detail over here中写了如何实现上述三种方法
# 2 楼答案
好的,我让经理通过添加我的应用程序来修复它。yml给正在建造的码头工人。格雷德尔:
然后我不得不复印申请表。使用dockerfile将yml添加到图像
然后我将spring的配置设置到我的应用程序中。yml