从Palantir Gradle-Docker插件切换到Spring Boot bootBuildImage的配置问题
Spring Boot Gradle Plugin bootBuildImage 自定义配置方案
所有配置均在build.gradle的bootBuildImage任务块中定义,无需额外编写Dockerfile即可实现你的三个需求。
1. 自定义日志存储路径
通过注入Spring Boot日志配置对应的环境变量即可修改默认日志路径,也可同步配置挂载卷避免日志数据随容器销毁丢失:
bootBuildImage { environment = [ // 配置默认日志存储路径,对应Spring配置项logging.file.path "LOGGING_FILE_PATH": "/var/log/my-custom-app" ] // 可选:将日志目录设为持久化卷 volumes = [ "/var/log/my-custom-app" ] }
容器启动时也可通过-e LOGGING_FILE_PATH=临时自定义路径覆盖构建时预设的默认值。
2. 创建并指定自定义用户运行应用
Spring Boot官方buildpack支持直接通过环境变量声明自定义用户/组,无需手动执行用户创建命令:
bootBuildImage { environment = [ // 格式为 用户名:用户ID,自动创建对应的系统用户 "BP_APP_USER": "appuser:1002", // 格式为 组名:组ID,自动创建对应的用户组 "BP_APP_GROUP": "appgroup:1002" ] // 指定容器启动时使用的用户,填用户ID:组ID即可 user = "1002:1002" }
注:该配置仅支持Spring Boot 2.6及以上版本,低版本建议先升级插件版本。
3. 修改指定目录所有权为自定义用户
通过buildpack内置的目录权限配置参数,可直接指定需要修改权限和所有者的目录:
bootBuildImage { environment = [ // 格式为 目录路径:用户ID:组ID:权限值,多个目录用英文逗号分隔 "BP_DIRECTORY_PERMISSIONS": "/var/log/my-custom-app:1002:1002:755,/workspace:1002:1002:755" ] }
完整配置示例
bootBuildImage { imageName = "my-org/my-app:${version}" environment = [ "LOGGING_FILE_PATH": "/var/log/my-custom-app", "BP_APP_USER": "appuser:1002", "BP_APP_GROUP": "appgroup:1002", "BP_DIRECTORY_PERMISSIONS": "/var/log/my-custom-app:1002:1002:755,/workspace:1002:1002:755" ] user = "1002:1002" volumes = [ "/var/log/my-custom-app" ] }
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

