Spring boot 如何在spring boot gradle任务构建的cloudfoundry buildpack docker映像中设置区域设置和编码;bootBuildImage";
当我用spring boot应用程序创建docker映像时,我看到了在spring boot应用程序装入运行容器的目录的文件名中存在编码问题。我通过gradle任务Spring boot 如何在spring boot gradle任务构建的cloudfoundry buildpack docker映像中设置区域设置和编码;bootBuildImage";,spring-boot,docker,locale,cloud-foundry,buildpack,Spring Boot,Docker,Locale,Cloud Foundry,Buildpack,当我用spring boot应用程序创建docker映像时,我看到了在spring boot应用程序装入运行容器的目录的文件名中存在编码问题。我通过gradle任务bootBuildImage创建docker映像,如下所述 当我查看正在运行的容器时,我看到区域设置被设置为posix。在常规Dockerfile中,我将运行适当的命令来设置德语utf-8语言环境设置。但是SpringBoot使用的是CloudFoundryBuildPack,我找不到地方可以连接到语言环境设置。如何在生成过程中调整图
bootBuildImage
创建docker映像,如下所述
当我查看正在运行的容器时,我看到区域设置被设置为posix。在常规Dockerfile中,我将运行适当的命令来设置德语utf-8语言环境设置。但是SpringBoot使用的是CloudFoundryBuildPack,我找不到地方可以连接到语言环境设置。如何在生成过程中调整图像的区域设置
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=
默认情况下,SpringBootGradle插件使用。运行映像为生成的应用程序映像提供基本操作系统层,这就是区域设置的来源 覆盖区域设置的一种方法是基于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
构建并标记自定义运行映像后,您可以使用
runImage
属性覆盖Spring Boot Gradle插件中的默认运行映像,或者在命令行上使用--runImage
标志覆盖默认运行映像。尽管我认为Scotts的答案仍然是最好的,作为替代选项,您可以为生成器图像设置环境变量,这可以控制最终图像的环境变量
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<env>
<BPE_DELIM_JAVA_TOOL_OPTIONS xml:space="preserve"> </BPE_DELIM_JAVA_TOOL_OPTIONS>
<BPE_APPEND_JAVA_TOOL_OPTIONS>-XX:+HeapDumpOnOutOfMemoryError</BPE_APPEND_JAVA_TOOL_OPTIONS>
</env>
</image>
</configuration>
</plugin>
org.springframework.boot