spring-boot - spring boot gradle任务“bootBuildImage”构建的cloudfoundry buildpack docker镜像中的语言环境和编码设置如何
问题描述
当我使用 spring boot 应用程序创建 docker 映像时,我发现使用 spring boot 应用程序安装到正在运行的容器中的目录的文件名存在编码问题。bootBuildImage
我按照此处所述通过 gradle 任务创建 docker 映像。
当我查看正在运行的容器时,我看到语言环境设置为 posix。在常规的 Dockerfile 中,我会运行适当的命令来设置德语 utf-8 语言环境设置。但是 Spring Boot 使用的是 Cloud Foundry 构建包,我找不到可以挂接语言环境设置的地方。如何在构建过程中调整图像的语言环境?
cnb@9d24bfe67b9e:/$ locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
解决方案
默认情况下,Spring Boot Gradle 插件使用Paketo 构建器镜像和运行镜像。运行映像为生成的应用程序映像提供了基础操作系统层,这就是语言环境的来源。
覆盖区域设置的一种方法是基于 Paketo 运行映像生成自定义运行映像并在自定义运行映像中设置区域设置。自定义运行映像的 Dockerfile 可能如下所示:
FROM paketobuildpacks/run:base-cnb
USER root
RUN apt-get install -y locales
RUN locale-gen de_DE.utf8
ENV LANG de_DE.UTF-8
ENV LANGUAGE de_DE:de
ENV LC_ALL de_DE.UTF-8
构建并标记自定义运行映像后,您可以在 Spring Boot Gradle 插件配置中使用runImage
属性或在命令行中使用---runImage
标志覆盖默认运行映像。
推荐阅读
- rpa - tagui中循环的意外结果
- javascript - 单击外部时,我无法隐藏导航下拉菜单
- powerbi - Power BI On-Premises 数据网关不刷新 SQL Server 分析服务仪表板
- clojure - :on-click 呈现为文本
- asp.net-mvc - 如何将用户列表发布到 ASP.Core POST 操作?
- javascript - array.shift() 在 axios 响应中不起作用?
- android - 拨出电话时Android意图操作错误
- python - 如何将数据帧附加到 iterrows 中的数据帧
- mysql - 如何在查询中同时添加 Alter 和 Select?
- vue.js - 如何在 nativescript vue 中管理用户的登录状态?