【问题标题】:How can the locale and encoding set in cloudfoundry buildpack docker image built by spring boot gradle task "bootBuildImage"spring boot gradle任务“bootBuildImage”构建的cloudfoundry buildpack docker镜像中的语言环境和编码设置如何
【发布时间】:2021-04-07 23:11:13
【问题描述】:

当我使用 Spring Boot 应用程序创建 Docker 映像时,我发现使用 Spring Boot 应用程序安装到正在运行的容器中的目录的文件名存在编码问题。我按照here 的描述通过 gradle 任务 bootBuildImage 创建 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 docker locale cloud-foundry buildpack


    【解决方案1】:

    默认情况下,Spring Boot Gradle 插件使用Paketo builder image and run image。运行映像为生成的应用映像提供了基础操作系统层,这就是语言环境的来源。

    覆盖区域设置的一种方法是根据 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 属性或在命令行中使用 ---runImage 标志覆盖 Spring Boot Gradle 插件 configuration 中的默认运行映像。

    【讨论】:

      【解决方案2】:

      尽管我认为 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>
      

      https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/#build-image-example-builder-configuration

      【讨论】:

        猜你喜欢
        • 2021-03-28
        • 1970-01-01
        • 2021-03-15
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 2018-06-13
        • 2016-09-05
        • 2011-09-20
        相关资源
        最近更新 更多