问题描述:
由于要支持前端界面语言国际化,所以我们在docker的环境变量中增加了语言配置,结构如下:
# docker-compose.yml 文件内容
viewer:
image: xxx
restart: always
ports:
- xxxx:xxxx
environment:
- LANGUAGE=${LANGUAGE}
# .env 文件内容
LANGUAGE=en-US
产品运行环境为ubutu,viewer容器启动时,会读取.env文件中的LANGUAGE变量。测试时发现,在有些ubutu环境中,viewer容器读取到的环境变量一直为zh_CN:zh,而不是我们设置的en-US。
解决方案:
出现此问题的原因是.env中的LANGUAGE环境变量被系统的LANGUAGE环境变量覆盖,解决方案有两种:
1.项目中的语言环境变量key值不使用LANGUAGE、LANG等
2.修改系统LANGUAGE值,修改完重启docker容器生效:
# 临时修改
export LANGUAGE=en_US.UTF-8
# 永久修改
sudo vim /etc/default/locale
# 将/etc/default/locale 文件内容修改为
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"