java - 如何使用配置文件在 docker 中启动 spring boot 应用程序?

标签 java spring spring-boot docker dockerfile

我有一个简单的 spring-boot 项目:

-resources
 -application.yaml
 -application-test.yaml

我有这个 Dockerfile:

FROM openjdk:8-jdk-alpine
EXPOSE 8080
ADD micro-boot.jar micro-boot.jar
ENTRYPOINT ["java","-Dspring.profiles.active=test" "-jar","/micro-boot.jar"]

1) 我构建镜像 - C:\micro-boot>docker build -f Dockerfile -t micro-boot .

2) 显示所有镜像 - C:\micro-boot>docker image ls -a

micro-boot   latest  ccc9a75ebc24  4 seconds ago 112MB

3) 尝试启动C:\micro-boot>docker image ls -a

我得到一个错误:

/bin/sh: [java,-Dspring.profiles.active=test: not found

最佳答案

我们有3种方式:

<强>1。在 Dockerfile 中传递 Spring Profile

FROM openjdk:8-jre-alpine
...
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=test","-jar","app.jar"]

<强>2。在 Docker 运行中传递 Spring Profile

docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=test" --name my-app:latest

<强>3。在 DockerCompose 中传递 Spring Profile

version: "3.5"
services:
  my-app:
     image: my-app:latest
     ports:
       - "8080:8080" 
     environment:
       - "SPRING_PROFILES_ACTIVE=test"

关于java - 如何使用配置文件在 docker 中启动 spring boot 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55752013/

相关文章:

java - 如果我没有标记为 @EnableJms 注释的类,spring 如何查找 @EnableJms 方法?

spring - ¿如何使用 Spring Security 仅为我的 api 禁用 CSRF?

java - 使用 @JsonView 的 Spring Json-Serialization 返回关联的空对象

c# - Android -- 如何通过应用程序访问 ASP.NET 数据库中的数据?

java - 如何使用 Spring 表达式语言比较日期?

java - 找不到 java.lang.Object 的类文件

java - 如何使用独立的 Neo4j 服务器配置 spring-data-neo4j?

spring - 对 Spring security 有权限的个人和组

java - 不需要R,但是获取R无法解决变量错误

java - Spring Boot + Apache 磁贴