我的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) {
请帮助
答案 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。
希望有帮助。