无法将参数传递给在Docker上运行的Spring Boot应用

时间:2018-10-22 10:46:45

标签: docker spring-boot dockerfile

我正在尝试为我的Spring Boot应用程序创建Docker映像。
为了启动该应用程序,我需要传递一些参数以在环境之间进行切换,在本地我使用以下命令:

java -Denv=local -jar my-app-1.0-SNAPSHOT.jar

但是使用Docker,我从未成功通过env参数,因此它在容器启动后立即崩溃。

我尝试了ENTRYPOINT ["java", "-Denv=prod","-Djava.security.egd=file:/dev/./urandom","-jar","/flad-rest.jar"][CMD ["-Denv=prod"],但没有任何效果

这是我的Dockerfile:

# Start with a base image containing Java runtime
FROM openjdk:8-jdk-alpine

# Add a volume pointing to /tmp
VOLUME /tmp

# Make port 9091 available to the world outside this container
EXPOSE 9091

# The application's jar file
ARG JAR_FILE=flad-rest/target/flad-rest-1.0-SNAPSHOT-exec.jar

# Add the application's jar to the container
ADD ${JAR_FILE} flad-rest.jar

# Run the jar file
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/flad-rest.jar"]

1 个答案:

答案 0 :(得分:0)

使用Docker时,您可以使用操作系统环境变量SPRING_PROFILES_ACTIVE来指定哪个Spring Profiles是活动的:

$ docker run -e "SPRING_PROFILES_ACTIVE=prod" -p 9091:9091 -t my-app:1.0-SNAPSHOT

$ docker run -e "SPRING_PROFILES_ACTIVE=dev" -p 9091:9091 -t my-app:1.0-SNAPSHOT

有关更多信息,请参见本guide中的使用Spring配置文件部分。