diff --git a/Dockerfile b/Dockerfile index bbc1085..b9b1170 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,84 +1,56 @@ -# Ver: 1.8 by Endial Fang (endial@126.com) +# Ver: 1.9 by Endial Fang (endial@126.com) # +# 默认变量 ======================================================================== +# 该部分变量为系统根据编译命令默认设置 + +# `TARGETPLATFORM`:构建后的目标平台信息。如 `linux/amd64`,`linux/arm/v7`,`windows/amd64` +# `TARGETOS`:目标平台信息(TARGETPLATFORM)中的操作系统部分,如:`linux`、`windows` +# `TARGETARCH`:目标平台信息(TARGETPLATFORM)中的平台架构部分,如:`amd64`、`arm` +# `TARGETVARIANT`:目标平台信息(TARGETPLATFORM)中的版本变体部分,如:`v7` +# `BUILDPLATFORM`:用于构建的节点平台信息 +# `BUILDOS`:用于构建的节点平台信息(BUILDPLATFORM)中的操作系统部分 +# `BUILDARCH`用于构建的节点平台信息(BUILDPLATFORM)中的平台架构部分 +# `BUILDVARIANT`用于构建的节点平台信息(BUILDPLATFORM)中的版本变体部分 + # 可变参数 ======================================================================== +# 该部分变量,在编译命令中通过 `--build-arg` 传入;如果未设置,则使用下面对应的默认值 # 设置当前应用名称及版本 -ARG app_name=alpine -ARG app_version=3.14 +ARG APP_NAME=alpine +ARG APP_VER=3.16 -# 设置默认仓库地址,默认为 阿里云 仓库 -ARG registry_url="registry.cn-shenzhen.aliyuncs.com" +# 设置默认仓库地址,默认为本地仓库;定义时需要包含末尾的`/` +ARG REGISTRY_URL="docker.colovu.com/" -# 设置 apt-get 源:default / tencent / ustc / aliyun / huawei -ARG apt_source=aliyun - -# 编译镜像时指定用于加速的本地服务器地址 -ARG local_url="" - -# 0. 预处理 ====================================================================== -#FROM ${registry_url}/colovu/abuilder as builder - -# 声明需要使用的全局可变参数 -#ARG app_name -#ARG app_version -#ARG registry_url -#ARG apt_source -#ARG local_url - - -#WORKDIR /tmp - -# 选择软件包源(Optional),以加速后续软件包安装 -#RUN select_source ${apt_source}; - -# 增加 NSS_WRAPPER 支持 -#RUN set -ex; \ -# mkdir -p /usr/local/include; \ -# echo -e "#ifndef NSS__H\n#define NSS__H\n\nenum nss_status\n{\n\tNSS_STATUS_TRYAGAIN = -2,\n\tNSS_STATUS_UNAVAIL,\n\tNSS_STATUS_NOTFOUND,\n\tNSS_STATUS_SUCCESS,\n\tNSS_STATUS_RETURN\n};\n\n#endif\n" > /usr/local/include/nss.h; \ -# appVersion=1.1.11; \ -# appName=nss_wrapper-${appVersion}.tar.gz; \ -# [ ! -z ${local_url} ] && localURL=${local_url}/cwrap; \ -# appUrls="${localURL} \ -# https://ftp.samba.org/pub/cwrap \ -# "; \ -# download_pkg unpack ${appName} "${appUrls}"; \ -# mkdir nss_wrapper-${appVersion}/build; \ -# (cd nss_wrapper-${appVersion}/build; \ -# cmake .. -DUNIT_TESTING:BOOL=ON; \ -# make -j "$(nproc)"; \ -# find . -name nss.h -print; \ -# make install); +# 设置 apt-get 源:default / ustc / aliyun +ARG APT_SOURCE=aliyun +# 编译镜像时指定用于加速的本地软件包存储服务器地址 +ARG LOCAL_URL="" # 1. 生成镜像 ===================================================================== -FROM alpine:${app_version} +FROM --platform=${TARGETPLATFORM:-linux/amd64} ${REGISTRY_URL}library/alpine:${APP_VER} # 声明需要使用的全局可变参数 -ARG app_name -ARG app_version -ARG registry_url -ARG apt_source -ARG local_url - -ENV APP_NAME=alpine-os +ARG APP_NAME +ARG APP_VER +ARG REGISTRY_URL +ARG APT_SOURCE +ARG LOCAL_URL +ARG TARGETARCH LABEL \ - "Version"="v${app_version}" \ - "Description"="Docker image for Alpine OS v${app_version}." \ - "Dockerfile"="https://github.com/colovu/docker-alpine" \ + "Version"="v${APP_VER}" \ + "Description"="Docker image for Alpine." \ + "Github"="https://github.com/colovu/docker-alpine" \ "Vendor"="Endial Fang (endial@126.com)" # 拷贝默认的通用脚本文件 COPY prebuilds / -# 从预处理过程中拷贝软件包 -#COPY --from=builder /usr/local/lib64/libnss_wrapper.so /usr/lib/ - # 选择软件包源(Optional),以加速后续软件包安装 -RUN select_source ${apt_source} - - +RUN select_source ${APT_SOURCE} # 增加musl版本的locales支持,并设置默认为 UTF-8 RUN apk add --no-cache libintl; \ diff --git a/README.md b/README.md index e3d7a72..6318c69 100644 --- a/README.md +++ b/README.md @@ -7,22 +7,21 @@ **版本信息:** -- 3.14、latest -- 3.13 -- 3.12 +- 3.16、latest **镜像信息:** * 镜像地址: - * 阿里云: registry.cn-shenzhen.aliyuncs.com/colovu/alpine:3.14 - * Docker Hub: colovu/alpine:3.14 - * 依赖镜像:alpine:3.14 + * 阿里云: registry.cn-shenzhen.aliyuncs.com/colovu/alpine:latest + * Docker Hub: colovu/alpine:latest + * Colovu Registry: docker.colovu.com/colovu/alpine:latest + * 依赖镜像:docker.io/library/alpine:3.16 -> 后续相关命令行默认使用`[Docker Hub](https://hub.docker.com)`镜像服务器做说明 +> 后续相关命令行默认使用`[Colovu Registry](https://docker.colovu.com)`镜像服务器做说明 **与官方镜像差异:** -- 增加 `default、tencent、ustc、aliyun、huawei` 源配置文件,可在编译时通过 `ARG` 变量`apt_source`进行选择 +- 增加 `default、ustc、aliyun` 源配置文件,可在编译时通过 `ARG` 变量`APT_SOURCE`进行选择 - 增加常用 Shell 脚本文件 - 更新已安装的软件包 - 增加`locales`,并设置默认编码格式为`en_US.utf8` @@ -31,32 +30,27 @@ - 默认增加 nss_wrapper 支持 - 默认增加 curl 软件,用作镜像健康检查 - ## TL;DR Docker 快速启动命令: ```shell -# 从 Docker Hub 服务器下载镜像并启动 -$ docker run -it colovu/alpine /bin/bash +# 从 Registry 服务器下载镜像并启动 +$ docker run -it docker.colovu.com/colovu/alpine:latest /bin/bash ``` - - --- - - ## 使用说明 **下载镜像:** ```shell -$ docker pull colovu/alpine +$ docker pull docker.colovu.com/colovu/alpine:latest ``` -- `colovu/alpine:`:镜像名称及版本标签 -- 不指定 TAG 时,默认下载 latest 镜像 +- latest:为镜像的 TAG,可针对性选择不同的 TAG 进行下载;可使用`latest`选择最新的镜像 +- 不指定 TAG 时,默认下载`latest`镜像 **查看镜像:** @@ -67,12 +61,12 @@ $ docker images **命令行方式运行容器:** ```shell -$ docker run -it --rm colovu/alpine /bin/bash +$ docker run -it --rm docker.colovu.com/colovu/alpine:latest /bin/bash ``` - `-it`:使用交互式终端启动容器 - `--rm`:退出时删除容器 -- `colovu/alpine:`:镜像名称及版本标签;标签不指定时默认使用`latest` +- `docker.colovu.com/colovu/alpine:latest`:镜像名称及版本标签 - `/bin/bash`:在容器中执行`/bin/bash`命令;如果不执行命令,容器会在启动后立即结束并退出。 以该方式启动后,直接进入容器的命令行操作界面。如果需要退出,直接使用命令`exit`退出。 @@ -80,16 +74,14 @@ $ docker run -it --rm colovu/alpine /bin/bash **后台方式运行容器:** ```shell -$ docker run -d --name test colovu/alpine tail /dev/stderr +$ docker run -d --name test docker.colovu.com/colovu/alpine:latest tail /dev/stderr ``` - `--name test`:命名容器为`test` - `-d`:以后台进程方式启动容器 -- `colovu/alpine:`:镜像名称及版本标签;标签不指定时默认使用`latest` +- `docker.colovu.com/colovu/alpine:latest`:镜像名称及版本标签 - `tail /dev/stderr`:在容器中执行`tail /dev/stderr`命令,以防止容器直接退出 - - 以该方式启动后,如果想进入容器,可以使用以下命令: ```shell @@ -100,16 +92,10 @@ $ docker exec -it test /bin/bash - `test`:之前启动的容器名 - `/bin/bash`:执行的命令 - - ## 更新记录 -- 3.14、latest -- 3.13 -- 3.12 - +- 3.16、latest ---- 本文原始来源 [Endial Fang](https://github.com/colovu) @ [Github.com](https://github.com) -