使用-e的Docker无法正常运行。无法在run命令中传递spring.profiles.active

时间:2019-01-10 08:11:43

标签: spring-boot docker spring-boot-docker-plugin

我的docker文件遇到一个问题。映像构建成功,但是在运行时出现错误,因为我在run命令中设置的活动配置文件没有反映。

# Get java
FROM openjdk:8-jdk-alpine


VOLUME /tmp
ARG JAR
COPY ${JAR} app.jar

EXPOSE 8080
ENV severn_js_key=1234qasw

ENTRYPOINT ["java", "-jar", "app.jar"]

我的运行命令就像

sudo docker run -e SPRING_PROFILES_ACTIVE=dev  -p 8088:80  -t tws-apps/service:1.0.0-SNAPSHOT

执行此语句时,服务器日志中出现空指针异常

String environment = System.getProperty("spring.profiles.active");
switch (environment) {

请帮助

1 个答案:

答案 0 :(得分:1)

您将SPRING_PROFILES_ACTIVE作为系统环境变量传递到docker容器。您应改为将其作为Java System Property传递。一种解决方案是通过覆盖入口点来运行容器:

docker run --entrypoint java -t tws-apps/service:1.0.0-SNAPSHOT -Dspring.profiles.active=dev -jar app.jar

或者,在您的Dockerfile中更改入口点。可能是一个脚本,该脚本读取SPRING_PROFILES_ACTIVE环境变量,然后以var作为系统属性运行Java。

希望有帮助。