From 640e5d76db98cb7ffd15053a266ba5ab021bdfbd Mon Sep 17 00:00:00 2001 From: Endial Fang Date: Fri, 4 Aug 2023 14:14:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=20Dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 86 +++++++++++------------------------------------------- 1 file changed, 17 insertions(+), 69 deletions(-) diff --git a/Dockerfile b/Dockerfile index ffce9b7..b8052f0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,95 +29,43 @@ ARG APT_SOURCE=aliyun # 编译镜像时指定用于加速的本地软件包存储服务器地址 ARG LOCAL_URL="" -# 0. 预处理 ====================================================================== -FROM --platform=${TARGETPLATFORM:-linux/amd64} ${REGISTRY_URL}library/debian:${APP_VER}-slim as builder - -# 声明需要使用的全局可变参数 -ARG APP_NAME -ARG APP_VER -ARG REGISTRY_URL -ARG APT_SOURCE -ARG LOCAL_URL - -# 拷贝默认的通用脚本文件 -COPY prebuilds / - -# 选择软件包源(Optional),以加速后续软件包安装 -RUN select_source ${APT_SOURCE}; - -# 设置工作目录 -WORKDIR /usr/local - -#RUN install_pkg sudo wget curl git ca-certificates iproute2 net-tools nano dpkg gnupg \ -# dirmngr apt-utils apt-transport-https lsb-release iputils-ping \ -# build-essential cmake libcmocka-dev pkg-config libssl1.1 libssl-dev \ -# libtool libltdl7 libltdl-dev - -RUN install_pkg wget ca-certificates dpkg - -# 下载并解压软件包 -RUN set -eux; \ - appVersion=1.16; \ - appName=gosu-"$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ - appKeys="0xB42F6819007F00F88E364FD4036A9C25BF357DD4"; \ - [ ! -z ${LOCAL_URL} ] && localURL=${LOCAL_URL}/gosu; \ - appUrls="${LOCAL_URL:-}/${appVersion} \ - https://github.com/tianon/gosu/releases/download/${appVersion} \ - "; \ - download_pkg install ${appName} "${appUrls}" ; \ - chmod +x /usr/local/bin/${appName}; - # 1. 生成镜像 ===================================================================== FROM --platform=${TARGETPLATFORM:-linux/amd64} ${REGISTRY_URL}library/debian:${APP_VER}-slim # 声明需要使用的全局可变参数 ARG APP_NAME ARG APP_VER -ARG REGISTRY_URL ARG APT_SOURCE -ARG LOCAL_URL -ARG TARGETARCH LABEL \ "Version"="v${APP_VER}" \ "Description"="Docker image for Debian." \ - "Github"="https://github.com/colovu/docker-debian" \ + "Github"="https://github.com/colovu/docker-${APP_NAME}" \ "Vendor"="Endial Fang (endial@126.com)" # 拷贝默认的通用脚本文件 COPY prebuilds / - -# 从预处理过程中拷贝软件包 -COPY --from=builder /usr/local/bin/gosu-${TARGETARCH} /usr/local/bin/gosu - -# 选择软件包源(Optional),以加速后续软件包安装 -RUN select_source ${APT_SOURCE} - -# 增加 NSS_WRAPPER 支持 -RUN install_pkg locales apt-utils tini libnss-wrapper curl - -# 增加locales支持,并设置默认为 UTF-8;配置时区默认为 Shanghai -RUN set -eux; \ - sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen; \ - sed -i -e 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen; \ - locale-gen; \ - update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_MESSAGES=POSIX; \ - dpkg-reconfigure -f noninteractive locales; \ - \ - ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; \ - dpkg-reconfigure -f noninteractive tzdata; - + ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US.UTF-8 \ LC_ALL=en_US.UTF-8 -# 执行预处理脚本,并验证安装的软件包 RUN set -eux; \ - gosu nobody true; \ - gosu --version; \ - tini --version; - -WORKDIR / + # 更新软件源地址 + select_source ${APT_SOURCE}; \ + \ + # 安装常用的软件包 + install_pkg gosu dumb-init curl locales; \ + \ + # 配置 locale 为 en_US.UTF-8 + sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen; \ + locale-gen; \ + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_MESSAGES=POSIX; \ + dpkg-reconfigure -f noninteractive locales; \ + \ + # 设置时区为 Shanghai + ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; \ + dpkg-reconfigure -f noninteractive tzdata; # 应用程序的服务命令,必须使用非守护进程方式运行。如果使用变量,则该变量必须在运行环境中存在(ENV可以获取) CMD []