feat: 优化 Dockerfile
This commit is contained in:
+17
-69
@@ -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 []
|
||||
|
||||
Reference in New Issue
Block a user