资讯专栏INFORMATION COLUMN

Docker容器启用Spring Profiles

shinezejian / 3571人阅读

摘要:在使用快速搭建基于的微服务时,碰到了关于的问题。通过解决这个问题的过程,觉得有必要梳理一下在容器中启用的方式。例如会将传递给容器通过定义如果基于,或使用文件部署镜像,可以通过文件的标签传递。

在使用Spring Boot快速搭建基于Docker的微服务时,碰到了关于spring.profiles.active的问题。
具体可以参见我在stackoverflow的提问。
https://stackoverflow.com/que...

通过解决这个问题的过程,觉得有必要梳理一下在Docker容器中启用Spring Profile的方式。
刚好看到一篇比较好的文章,翻译了其中的大部分内容。

======================= 如下为翻译内容 =============================

通过Dockerfile定义Spring Profile

通常在命令行中我们可以使用“java -jar” 运行 Spring Boot应用。
而Profiles信息可以作为额外参数传递,比如“-Dspring.profiles.active=dev”

java -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=dev -jar rest-api.jar

相似的,我们可以在Dockerfile中将Profile的信息作为参数传递进去,例如:

FROM java:8
ADD target/my-api.jar rest-api.jar
RUN bash -c "touch /user-service.jar"
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=dev","-jar","/rest-api.jar"]

需要注意最后的ENTRYPOINT一行,在这行中我们传递java命令以执行jar文件,所有需要的参数和值以逗号方式分隔传递。
“-Dspring.profiles.active=dev” 是我们定义dev profile的地方,我们可以替换dev为任何需要的名字。

通过Docker run命令定义Spring Profile

可以将spring profile作为环境变量传递给docker run命令,使用 -e 标记。
例如 -e “SPRING_PROFILES_ACTIVE=dev”会将dev profile传递给Docker容器

docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=dev" --name rest-api dockerImage:latest
通过Docker Compose定义Spring Profile

如果基于DockerSwarm,或使用docker-compose.yml文件部署Docker镜像,Spring Profile可以通过docker-compose.yml文件的 environment 标签传递。
例如:

...
version: "3"
services:
  rest-api:
   image: rest-api:0.0.1
   ports:
     - "8080:8080" 
   environment:
     - "SPRING_PROFILES_ACTIVE=dev"  
...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27039.html

相关文章

  • spring boot 配合maven打成可执行jar,构建镜像部署到docker容器

    摘要:本篇文章将介绍应用如何打成包并将构建为镜像部署到中应用打包需要配合打包将以下代码放到应用文件中执行打打包命令命令执行完成后在应用目录下会有打出来打包此包会包含应用所有打依赖直接拷出这个包在命令行执行应用名就可以运行了构建镜像 本篇文章将介绍springboot应用如何打成jar包,并将jar构建为docker镜像部署到docker中 应用打包 需要配合spring-boot-mave...

    y1chuan 评论0 收藏0
  • Spring Boot 框架介绍和使用

    摘要:使用还是,根据个人喜好即可。如果错误页面也需要使用模板引擎动态生成,那么放在下面的路径。数据库自动配置嵌入式数据库如果类路径中包含或的相应包,那么就会自动配置这些嵌入式数据库的实例和数据源。 本文参考自Spring Boot文档。 Spring Boot 简介 Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西。因此就有了Spring Boot框架,它的作用很...

    Zack 评论0 收藏0
  • Spring Boot 应用 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)

    摘要:应用化极简教程陈光剑基于的企业级应用开发最佳实践前面的章节中,我们都是在环境中开发运行测试应用程序。关键字是分布式应用微服务容器虚拟化。通常,在企业项目实践中,会实现一套应用部署发布的自动化运维平台工具。 Spring Boot 应用 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)—— 基于 Gradle + Kotlin的企业级应用开发最佳实践 前面的章节中,...

    Donne 评论0 收藏0
  • Spring Boot 应用 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)

    摘要:应用化极简教程陈光剑基于的企业级应用开发最佳实践前面的章节中,我们都是在环境中开发运行测试应用程序。关键字是分布式应用微服务容器虚拟化。通常,在企业项目实践中,会实现一套应用部署发布的自动化运维平台工具。 Spring Boot 应用 Docker 化 《Spring Boot 2.0极简教程》(陈光剑)—— 基于 Gradle + Kotlin的企业级应用开发最佳实践 前面的章节中,...

    rose 评论0 收藏0
  • Maven profile整合Spring profile

    摘要:此时可以尝试或命令打包,安装包内的文件中占位符已被替换。整合原理项目中一般都会加上可以查看的文件,里面包含定义的值是这样插件会将或文件中的替换为中对应的值。 在Maven和Spring中,都有profile这个概念。profile是用于区分各种环境的,例如开发环境、测试环境、正式环境等。Maven的profile用于在打包时根据指定环境替换不同环境的配置文件配置,如数据库配置。Spri...

    用户84 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<