Dockerfile中設定locale成正體中文-以node.js為例
Configure Locale to Traditional Chinese in Dockerfile for Node.js
最近看了github發了些須修補安全性的信件,偶然發現VSCode內開dockerfile會提示使用的base image已經有安全疑慮,而且Docker hub已經將風險都列出來。
為了減少安全疑慮,我就決定改用最新發布的base image(無critical和high項目),翻一下以前寫過得文章: 在Ubuntu 16.04的Dockerfile中設定locale 開始修改。
以下以 Debian 13 (trixie) base image,跑node.js程式為例調改了
- apt來源使用台灣鏡像站,這裡使用台灣大學的鏡像。
且trixie已預設使用APT Source List Format,修改apt設定是在 /etc/apt/sources.list.d/debian.sources 內,而且要修改的項目不太一樣。 - apt 不要安裝建議的套件,加上--no-install-recommends
- 產生英文與正體中文的語系檔並套用,這裡啟用中文語系時,多加了正則的 \b 來避免lzh_TW.UTF-8 語系也被我們啟用。
Dockerfile最終如下
FROM node:lts-trixie-slim
# 設定環境變數,避免 apt 安裝時互動
ENV DEBIAN_FRONTEND=noninteractive
# 修改 Debian Trixie 的 APT sources 成 使用台灣鏡像站
# 更新套件清單並安裝最小工具
RUN sed -i \
's|http://deb.debian.org/debian|http://debian.csie.ntu.edu.tw/debian|g' \
/etc/apt/sources.list.d/debian.sources \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
locales \
&& rm -rf /var/lib/apt/lists/*
# 產生正體中文 UTF-8 的 locale
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
sed -i '/\bzh_TW.UTF-8/s/^# //g' /etc/locale.gen && \
locale-gen
# 設定 UTF-8 環境,確保支援中文
ENV LANG=zh_TW.UTF-8
ENV LANGUAGE=zh_TW:zh
ENV LC_ALL=zh_TW.UTF-8
# 設定工作目錄
WORKDIR /app
EXPOSE 3000
CMD ["npm", "start"]
使用指令:
- 建置docker image
docker build -t mine/img:latest . -f Dockerfile - 跑起container
docker run -it --name my_container mine/img:latest - 跑起container, 不用了就移除
docker run --rm -it --name my_container mine/img:latest
留言