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

标签 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"]

最佳答案

使用 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

参见Using Spring Profiles Spring Boot with Docker 指南中的部分了解更多信息。

关于docker - 无法将参数传递给在 Docker 上运行的 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52927503/

相关文章:

Docker 容器内的 Docker golang 客户端

docker - 在 Windows 容器中使用命名管道(同一主机)

ruby-on-rails - 使用 structure.sql 中的模式在 Docker 中运行 `rails db:setup`

spring-boot - Jhipster 上下文路径更改

docker - 运行 docker-compose up 后数据库权限被拒绝

docker - 官方 Docker 镜像显示 docker 未运行?

docker - Docker:在CentOS 7上的代理后面安装Docker:提取镜像时出错

java - 无法在 Spring Boot 中读取 JVM 参数

angularjs - Spring 服务器中 OAuth 身份验证的 CORS 失败

docker - Docker不会从失败的dockerfile构建中释放内存