docker-compose 构建语言切换后不起作用

After docker-compose build language switching does not work

在 docker 容器中添加我的应用程序后,语言切换无法正常工作...我发现切换部分有效。从数据库中获取的对象以所需的语言显示。取自 messages.properties 的文本仅以英文显示。虽然我添加了两种语言(俄语和英语)。为什么会发生这种情况以及如何解决这个问题?

我猜情况可能在messageSource.setBasename ("classpath: messages").

@Configuration
class WebConfig: WebMvcConfigurer {

    @Bean
    fun  localeResolver(): LocaleResolver {
        val slr = SessionLocaleResolver()
        slr.setDefaultLocale(UtilsLocale.getDefault())
        return slr;
    }

    @Bean
    fun localeChangeInterceptor(): LocaleChangeInterceptor {
        val lci = LocaleChangeInterceptor()
        lci.paramName = "language"
        return lci
    }

    @Bean
    fun messageSource(): MessageSource {
        val messageSource = ReloadableResourceBundleMessageSource()
        messageSource.setBasename("classpath:messages")
        messageSource.setDefaultEncoding("UTF-8")
        return messageSource
    }

    @Bean
    fun validator(): LocalValidatorFactoryBean {
        val bean = LocalValidatorFactoryBean()
        bean.setValidationMessageSource(messageSource())
        return bean
    }

    override fun addInterceptors(registry: InterceptorRegistry) {
        registry.addInterceptor(localeChangeInterceptor())
    }

}

@Component
object UtilsLocale {
    val LOCALE_RU = Locale("ru", "RU")
    val LOCALE_EN = Locale.ENGLISH

    fun getDefault(): Locale = LOCALE_RU

    fun getAll(): Array<Locale> = arrayOf(LOCALE_RU, LOCALE_EN)
}

这是 Dockerfile:

FROM anapsix/alpine-java:8_jdk

MAINTAINER Zemtsov Alexey Vladimirovich <***>

ARG CONTEXT_PATH
ARG DB_HOST
ARG DB_PORT
ARG DB_NAME
ARG DB_USER
ARG DB_PASSWORD
ARG MAIL_LOGIN
ARG MAIL_PASSWORD

ENV PATH_DIR /tmp/webapp

WORKDIR $PATH_DIR

ADD target/webapp-*.jar webapp.jar

EXPOSE 8080

ENTRYPOINT java -jar webapp.jar

这是docker-compose.yml

version: '3.7'

services:

  db:
    image: mysql:8.0.17
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ****
    ports:
      - 3306:3306
    volumes:
      - /home/alexey/temp/mysql01:/var/lib/mysql

  adminer:
    image: adminer
    restart: always
    ports:
      - 3380:8080

  webapp:
    build:
      context: .
    environment:
      CONTEXT_PATH: /a-test
      DB_HOST: db
      DB_PORT: 3306
      DB_NAME: ****
      DB_USER: ****
      DB_PASSWORD: ****
      MAIL_LOGIN: ****
      MAIL_PASSWORD: ****
    ports:
      - 80:8080
    volumes:
      - /home/alexey/temp/webapp/logs:/tmp/webapp/logs
    depends_on:
      - db

编辑:这是日志系统道具^

[INFO ] 2019-09-11 15:35:03.186 [main] PropertiesLogger - ******* systemProperties *******
[INFO ] 2019-09-11 15:35:03.229 [main] PropertiesLogger - PID=1
[INFO ] 2019-09-11 15:35:03.233 [main] PropertiesLogger - awt.toolkit=sun.awt.X11.XToolkit
[INFO ] 2019-09-11 15:35:03.234 [main] PropertiesLogger - file.encoding=UTF-8
[INFO ] 2019-09-11 15:35:03.235 [main] PropertiesLogger - file.encoding.pkg=sun.io
[INFO ] 2019-09-11 15:35:03.237 [main] PropertiesLogger - file.separator=/
[INFO ] 2019-09-11 15:35:03.239 [main] PropertiesLogger - java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
[INFO ] 2019-09-11 15:35:03.241 [main] PropertiesLogger - java.awt.headless=true
[INFO ] 2019-09-11 15:35:03.242 [main] PropertiesLogger - java.awt.printerjob=sun.print.PSPrinterJob
[INFO ] 2019-09-11 15:35:03.244 [main] PropertiesLogger - java.class.path=webapp.jar
[INFO ] 2019-09-11 15:35:03.246 [main] PropertiesLogger - java.class.version=52.0
[INFO ] 2019-09-11 15:35:03.248 [main] PropertiesLogger - java.endorsed.dirs=/opt/jdk1.8.0_202/jre/lib/endorsed
[INFO ] 2019-09-11 15:35:03.249 [main] PropertiesLogger - java.ext.dirs=/opt/jdk1.8.0_202/jre/lib/ext:/usr/java/packages/lib/ext
[INFO ] 2019-09-11 15:35:03.253 [main] PropertiesLogger - java.home=/opt/jdk1.8.0_202/jre
[INFO ] 2019-09-11 15:35:03.268 [main] PropertiesLogger - java.io.tmpdir=/tmp
[INFO ] 2019-09-11 15:35:03.269 [main] PropertiesLogger - java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
[INFO ] 2019-09-11 15:35:03.271 [main] PropertiesLogger - java.protocol.handler.pkgs=org.springframework.boot.loader
[INFO ] 2019-09-11 15:35:03.272 [main] PropertiesLogger - java.runtime.name=Java(TM) SE Runtime Environment
[INFO ] 2019-09-11 15:35:03.272 [main] PropertiesLogger - java.runtime.version=1.8.0_202-b08
[INFO ] 2019-09-11 15:35:03.281 [main] PropertiesLogger - java.specification.name=Java Platform API Specification
[INFO ] 2019-09-11 15:35:03.282 [main] PropertiesLogger - java.specification.vendor=Oracle Corporation
[INFO ] 2019-09-11 15:35:03.282 [main] PropertiesLogger - java.specification.version=1.8
[INFO ] 2019-09-11 15:35:03.283 [main] PropertiesLogger - java.vendor=Oracle Corporation
[INFO ] 2019-09-11 15:35:03.283 [main] PropertiesLogger - java.vendor.url=http://java.oracle.com/
[INFO ] 2019-09-11 15:35:03.284 [main] PropertiesLogger - java.vendor.url.bug=http://bugreport.sun.com/bugreport/
[INFO ] 2019-09-11 15:35:03.292 [main] PropertiesLogger - java.version=1.8.0_202
[INFO ] 2019-09-11 15:35:03.292 [main] PropertiesLogger - java.vm.info=mixed mode
[INFO ] 2019-09-11 15:35:03.293 [main] PropertiesLogger - java.vm.name=Java HotSpot(TM) 64-Bit Server VM
[INFO ] 2019-09-11 15:35:03.293 [main] PropertiesLogger - java.vm.specification.name=Java Virtual Machine Specification
[INFO ] 2019-09-11 15:35:03.294 [main] PropertiesLogger - java.vm.specification.vendor=Oracle Corporation
[INFO ] 2019-09-11 15:35:03.295 [main] PropertiesLogger - java.vm.specification.version=1.8
[INFO ] 2019-09-11 15:35:03.302 [main] PropertiesLogger - java.vm.vendor=Oracle Corporation
[INFO ] 2019-09-11 15:35:03.306 [main] PropertiesLogger - java.vm.version=25.202-b08
[INFO ] 2019-09-11 15:35:03.311 [main] PropertiesLogger - line.separator=

[INFO ] 2019-09-11 15:35:03.315 [main] PropertiesLogger - os.arch=amd64
[INFO ] 2019-09-11 15:35:03.316 [main] PropertiesLogger - os.name=Linux
[INFO ] 2019-09-11 15:35:03.316 [main] PropertiesLogger - os.version=4.15.0-60-generic
[INFO ] 2019-09-11 15:35:03.316 [main] PropertiesLogger - path.separator=:
[INFO ] 2019-09-11 15:35:03.317 [main] PropertiesLogger - spring.beaninfo.ignore=true
[INFO ] 2019-09-11 15:35:03.317 [main] PropertiesLogger - sun.arch.data.model=64
[INFO ] 2019-09-11 15:35:03.318 [main] PropertiesLogger - sun.boot.class.path=/opt/jdk1.8.0_202/jre/lib/resources.jar:/opt/jdk1.8.0_202/jre/lib/rt.jar:/opt/jdk1.8.0_202/jre/lib/sunrsasign.jar:/opt/jdk1.8.0_202/jre/lib/jsse.jar:/opt/jdk1.8.0_202/jre/lib/jce.jar:/opt/jdk1.8.0_202/jre/lib/charsets.jar:/opt/jdk1.8.0_202/jre/lib/jfr.jar:/opt/jdk1.8.0_202/jre/classes
[INFO ] 2019-09-11 15:35:03.318 [main] PropertiesLogger - sun.boot.library.path=/opt/jdk1.8.0_202/jre/lib/amd64
[INFO ] 2019-09-11 15:35:03.319 [main] PropertiesLogger - sun.cpu.endian=little
[INFO ] 2019-09-11 15:35:03.319 [main] PropertiesLogger - sun.cpu.isalist=
[INFO ] 2019-09-11 15:35:03.320 [main] PropertiesLogger - sun.io.unicode.encoding=UnicodeLittle
[INFO ] 2019-09-11 15:35:03.326 [main] PropertiesLogger - sun.java.command=webapp.jar
[INFO ] 2019-09-11 15:35:03.331 [main] PropertiesLogger - sun.java.launcher=SUN_STANDARD
[INFO ] 2019-09-11 15:35:03.331 [main] PropertiesLogger - sun.jnu.encoding=UTF-8
[INFO ] 2019-09-11 15:35:03.332 [main] PropertiesLogger - sun.management.compiler=HotSpot 64-Bit Tiered Compilers
[INFO ] 2019-09-11 15:35:03.335 [main] PropertiesLogger - sun.os.patch.level=unknown
[INFO ] 2019-09-11 15:35:03.341 [main] PropertiesLogger - user.dir=/tmp/webapp
[INFO ] 2019-09-11 15:35:03.350 [main] PropertiesLogger - user.home=/root
[INFO ] 2019-09-11 15:35:03.351 [main] PropertiesLogger - user.language=en
[INFO ] 2019-09-11 15:35:03.351 [main] PropertiesLogger - user.name=root
[INFO ] 2019-09-11 15:35:03.352 [main] PropertiesLogger - user.timezone=GMT
[INFO ] 2019-09-11 15:35:03.352 [main] PropertiesLogger - ******* systemEnvironment *******
[INFO ] 2019-09-11 15:35:03.352 [main] PropertiesLogger - CONTEXT_PATH=/a-test
[INFO ] 2019-09-11 15:35:03.353 [main] PropertiesLogger - DB_HOST=db
[INFO ] 2019-09-11 15:35:03.353 [main] PropertiesLogger - DB_NAME=****
[INFO ] 2019-09-11 15:35:03.353 [main] PropertiesLogger - DB_PASSWORD=****
[INFO ] 2019-09-11 15:35:03.353 [main] PropertiesLogger - DB_PORT=3306
[INFO ] 2019-09-11 15:35:03.354 [main] PropertiesLogger - DB_USER=***
[INFO ] 2019-09-11 15:35:03.354 [main] PropertiesLogger - GLIBC_REPO=https://github.com/sgerrand/alpine-pkg-glibc
[INFO ] 2019-09-11 15:35:03.354 [main] PropertiesLogger - GLIBC_VERSION=2.29-r0
[INFO ] 2019-09-11 15:35:03.355 [main] PropertiesLogger - HOME=/***
[INFO ] 2019-09-11 15:35:03.356 [main] PropertiesLogger - HOSTNAME=16adb4c57c07
[INFO ] 2019-09-11 15:35:03.357 [main] PropertiesLogger - JAVA_HOME=/opt/jdk
[INFO ] 2019-09-11 15:35:03.357 [main] PropertiesLogger - JAVA_JCE=standard
[INFO ] 2019-09-11 15:35:03.358 [main] PropertiesLogger - JAVA_PACKAGE=jdk
[INFO ] 2019-09-11 15:35:03.358 [main] PropertiesLogger - JAVA_VERSION_BUILD=08
[INFO ] 2019-09-11 15:35:03.359 [main] PropertiesLogger - JAVA_VERSION_MAJOR=8
[INFO ] 2019-09-11 15:35:03.360 [main] PropertiesLogger - JAVA_VERSION_MINOR=202
[INFO ] 2019-09-11 15:35:03.361 [main] PropertiesLogger - LANG=C.UTF-8
[INFO ] 2019-09-11 15:35:03.362 [main] PropertiesLogger - MAIL_LOGIN=****
[INFO ] 2019-09-11 15:35:03.362 [main] PropertiesLogger - MAIL_PASSWORD=****
[INFO ] 2019-09-11 15:35:03.363 [main] PropertiesLogger - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/jdk/bin
[INFO ] 2019-09-11 15:35:03.364 [main] PropertiesLogger - PATH_DIR=/tmp/webapp
[INFO ] 2019-09-11 15:35:03.364 [main] PropertiesLogger - PWD=/tmp/webapp
[INFO ] 2019-09-11 15:35:03.365 [main] PropertiesLogger - SHLVL=1
[INFO ] 2019-09-11 15:35:03.365 [main] PropertiesLogger - ******* applicationConfig: [classpath:/application.yml] *******
[INFO ] 2019-09-11 15:35:03.366 [main] PropertiesLogger - entitymanager.packagesToScan=work.chessman.webapp.database.entity
[INFO ] 2019-09-11 15:35:03.369 [main] PropertiesLogger - server.port=8080
[INFO ] 2019-09-11 15:35:03.380 [main] PropertiesLogger - server.servlet.context-path=${CONTEXT_PATH} OVERRIDDEN to /a-test
[INFO ] 2019-09-11 15:35:03.386 [main] PropertiesLogger - server.tomcat.max-http-post-size=1073741824
[INFO ] 2019-09-11 15:35:03.391 [main] PropertiesLogger - spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
[INFO ] 2019-09-11 15:35:03.400 [main] PropertiesLogger - spring.datasource.initial-size=5
[INFO ] 2019-09-11 15:35:03.404 [main] PropertiesLogger - spring.datasource.initialization-mode=always
[INFO ] 2019-09-11 15:35:03.406 [main] PropertiesLogger - spring.datasource.max-active=50
[INFO ] 2019-09-11 15:35:03.411 [main] PropertiesLogger - spring.datasource.max-idle=10
[INFO ] 2019-09-11 15:35:03.418 [main] PropertiesLogger - spring.datasource.min-idle=5
[INFO ] 2019-09-11 15:35:03.420 [main] PropertiesLogger - spring.datasource.password=${DB_PASSWORD} OVERRIDDEN to ******
[INFO ] 2019-09-11 15:35:03.422 [main] PropertiesLogger - spring.datasource.platform=mysql
[INFO ] 2019-09-11 15:35:03.426 [main] PropertiesLogger - spring.datasource.test-on-borrow=true
[INFO ] 2019-09-11 15:35:03.431 [main] PropertiesLogger - spring.datasource.url=jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false&createDatabaseIfNotExist=true OVERRIDDEN to jdbc:mysql://db:3306/chessman_work?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false&createDatabaseIfNotExist=true
[INFO ] 2019-09-11 15:35:03.438 [main] PropertiesLogger - spring.datasource.username=${DB_USER} OVERRIDDEN to root
[INFO ] 2019-09-11 15:35:03.440 [main] PropertiesLogger - spring.datasource.validation-query=SELECT 1
[INFO ] 2019-09-11 15:35:03.441 [main] PropertiesLogger - spring.jpa.generate-ddl=true
[INFO ] 2019-09-11 15:35:03.448 [main] PropertiesLogger - spring.jpa.hibernate.ddl-auto=update
[INFO ] 2019-09-11 15:35:03.448 [main] PropertiesLogger - spring.jpa.properties.hibernate.current_session_context_class=thread
[INFO ] 2019-09-11 15:35:03.449 [main] PropertiesLogger - spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
[INFO ] 2019-09-11 15:35:03.450 [main] PropertiesLogger - spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
[INFO ] 2019-09-11 15:35:03.450 [main] PropertiesLogger - spring.jpa.show-sql=false
[INFO ] 2019-09-11 15:35:03.471 [main] PropertiesLogger - spring.mail.default-encoding=UTF-8
[INFO ] 2019-09-11 15:35:03.475 [main] PropertiesLogger - spring.mail.host=smtp.gmail.com
[INFO ] 2019-09-11 15:35:03.487 [main] PropertiesLogger - spring.mail.password=${MAIL_PASSWORD} OVERRIDDEN to *****
[INFO ] 2019-09-11 15:35:03.488 [main] PropertiesLogger - spring.mail.port=587
[INFO ] 2019-09-11 15:35:03.489 [main] PropertiesLogger - spring.mail.properties.mail.smtp.auth=true
[INFO ] 2019-09-11 15:35:03.489 [main] PropertiesLogger - spring.mail.properties.mail.smtp.starttls.enable=true
[INFO ] 2019-09-11 15:35:03.490 [main] PropertiesLogger - spring.mail.properties.mail.smtp.starttls.required=true
[INFO ] 2019-09-11 15:35:03.491 [main] PropertiesLogger - spring.mail.protocol=smtp
[INFO ] 2019-09-11 15:35:03.506 [main] PropertiesLogger - spring.mail.test-connection=false
[INFO ] 2019-09-11 15:35:03.507 [main] PropertiesLogger - spring.mail.username=${MAIL_LOGIN} OVERRIDDEN to *****
[INFO ] 2019-09-11 15:35:03.508 [main] PropertiesLogger - spring.servlet.multipart.max-file-size=1024MB
[INFO ] 2019-09-11 15:35:03.509 [main] PropertiesLogger - spring.servlet.multipart.max-request-size=1024MB

已编辑:添加messages_ru_RU.properties文件后,标准语言变成了俄语,但是当我选择切换到英语时,语言没有切换回来.. .

已编辑: html 切换后语言设置正常

我正在为我的项目从 ubuntu 和所有工作创建新的 Dockerfile。

FROM ubuntu:19.10

EXPOSE 8080

MAINTAINER Zemtsov Alexey Vladimirovich <*****>

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get -y update
RUN apt-get -y upgrade

RUN apt-get install -y locales
RUN sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen
RUN dpkg-reconfigure --frontend=noninteractive locales
RUN update-locale LANG=ru_RU.UTF-8

ENV LANG ru_RU.UTF-8
ENV LANGUAGE ru_RU:ru
ENV LC_ALL ru_RU.UTF-8

RUN apt-get install -y openjdk-8-jdk

ARG CONTEXT_PATH
ARG DB_HOST
ARG DB_PORT
ARG DB_NAME
ARG DB_USER
ARG DB_PASSWORD
ARG MAIL_LOGIN
ARG MAIL_PASSWORD

WORKDIR /usr/app/webapp

ADD target/webapp-*.jar webapp.jar

ENTRYPOINT java -jar webapp.jar

CMD /bin/sh -c