Debian Dockerfile - 将语言环境更改为 UTF-8

问题描述 投票:0回答:1

我有一个用于 MySQL 数据库的 Docker 容器,我需要修复其中的区域设置问题。当我在 docker 镜像中执行 locale 命令时,得到以下结果:

# 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=

我想将其更改为UTF-8,因为当前的配置可能会导致问题。 这是 Dockerfile:

FROM mysql:8.0.33-debian

COPY mysql-repository.gpg mysql-repository.gpg


RUN apt-key add mysql-repository.gpg
RUN apt-get update && apt-get install -y dirmngr gpg curl gawk git python3 python3-venv locales
RUN git clone https://github.com/asdf-vm/asdf.git $HOME/.asdf --branch v0.11.1
RUN echo ". $HOME/.asdf/asdf.sh" >> $HOME/.bashrc

RUN sed -i '/C.UTF-8/s/^# //g' /etc/locale.gen && \
    locale-gen
ENV LANG C.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL C.UTF-8

WORKDIR /root

COPY install_asdf_packages.sh install_asdf_packages.sh
COPY .tool-versions .tool-versions

RUN bash -l install_asdf_packages.sh

RUN echo 'export PATH=/root/.venv/bin:${PATH}' >> $HOME/.bashrc

COPY tws.cnf /etc/mysql/conf.d/tws.cnf
RUN chmod 644 /etc/mysql/conf.d/tws.cnf

WORKDIR /

COPY db-transfer.sh db-transfer.sh
RUN chmod +x db-transfer.sh

ENTRYPOINT [ "./db-transfer.sh" ]

如何将语言环境更改为 UTF-8? RUN sed -i 命令和设置 ENV 值没有改变任何东西。

docker dockerfile debian
1个回答
0
投票

试试这个。

...

ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US

RUN apt-get update && apt-get install -y locales
RUN printf '%s\n' LANG=en_US LC_ALL=en_US.UTF-8 >/etc/default/locale
RUN echo en_US.UTF-8 UTF-8 >>/etc/locale.gen
RUN locale-gen

我开始写一个涉及

dpkg-reconfigure locales
的答案,但事实证明,这个问题存在多个错误,多年来一直没有解决。

# FIXME: broken
RUN printf '%s\t%s\t%s\t%s\n' \
    locales locales/locales_to_be_generated \
        multiselect "en_US.UTF-8 UTF-8" \
    locales locales/default_environment_locale \
        select "en_US.UTF8" | \
    debconf-set-selections && \
    DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales

安装完

locales
后,很明显。

© www.soinside.com 2019 - 2024. All rights reserved.