From 170f934e1322265857bfa3f087db3a098b56ba25 Mon Sep 17 00:00:00 2001 From: Endial Fang Date: Wed, 30 Jun 2021 18:28:46 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=E4=BC=98=E5=8C=96dockerfile=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF,=E6=9B=B4=E6=96=B0arg=E4=BD=BF=E7=94=A8=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 74 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 24 deletions(-) diff --git a/Dockerfile b/Dockerfile index 45a860d..78297d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,14 @@ -# Ver: 1.5 by Endial Fang (endial@126.com) +# Ver: 1.8 by Endial Fang (endial@126.com) # -# 预处理 ========================================================================= +# 可变参数 ======================================================================== + +# 设置当前应用名称及版本 +ARG app_name=test +ARG app_version=1.0.0 + +# 设置默认仓库地址,默认为 阿里云 仓库 ARG registry_url="registry.cn-shenzhen.aliyuncs.com" -FROM ${registry_url}/colovu/dbuilder as builder # 设置 apt-get 源:default / tencent / ustc / aliyun / huawei ARG apt_source=aliyun @@ -11,8 +16,16 @@ ARG apt_source=aliyun # 编译镜像时指定用于加速的本地服务器地址 ARG local_url="" -ENV APP_NAME=test \ - APP_VERSION=1.0.0 + +# 0. 预处理 ====================================================================== +FROM ${registry_url}/colovu/dbuilder as builder + +# 声明需要使用的全局可变参数 +ARG app_name +ARG app_version +ARG registry_url +ARG apt_source +ARG local_url # 选择软件包源(Optional),以加速后续软件包安装 #RUN select_source ${apt_source}; @@ -20,13 +33,16 @@ ENV APP_NAME=test \ # 安装依赖的软件包及库(Optional) #RUN install_pkg xz-utils +# 设置工作目录 +WORKDIR /usr/local + # 下载并解压软件包 #RUN set -eux; \ # appVersion=1.12; \ # appName=gosu-"$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ # appKeys="0xB42F6819007F00F88E364FD4036A9C25BF357DD4"; \ # sha256="04fa1fddc39bd1aecb6739dd5dd73858a3515b427acd1e2947a66dadce868d68"; \ -# [ ! -z ${local_url} ] && localURL=${local_url}/${APP_NAME}; \ +# [ ! -z ${local_url} ] && localURL=${local_url}/${app_name}; \ # appUrls="${localURL:-} \ # https://github.com/tianon/gosu/releases/download/${appVersion} \ # "; \ @@ -34,24 +50,24 @@ ENV APP_NAME=test \ # download_pkg unpack ${appName} "${appUrls}"; \ # chmod +x /usr/local/bin/${appName}; -# 源码编译: 编译后将配置文件模板拷贝至 /usr/local/${APP_NAME}/share/${APP_NAME} 中 +# 源码编译: 编译后将配置文件模板拷贝至 /usr/local/${app_name}/share/${app_name} 中 #RUN set -eux; \ -# APP_SRC="/usr/local/${APP_NAME}-${APP_VERSION}"; \ +# APP_SRC="/usr/local/${app_name}-${app_version}"; \ # cd ${APP_SRC}; \ # ./configure \ -# --prefix=/usr/local/${APP_NAME} \ +# --prefix=/usr/local/${app_name} \ # ; \ # make -j "$(nproc)"; \ -# make PREFIX=/usr/local/${APP_NAME} install; +# make PREFIX=/usr/local/${app_name} install; # 删除编译生成的多余文件 RUN set -eux; \ find /usr/local -name '*.a' -delete; \ - rm -rf /usr/local/${APP_NAME}/include; + rm -rf /usr/local/${app_name}/include; # 检测并生成依赖文件记录 RUN set -eux; \ - find /usr/local/${APP_NAME} -type f -executable -exec ldd '{}' ';' | \ + find /usr/local/${app_name} -type f -executable -exec ldd '{}' ';' | \ awk '/=>/ { print $(NF-1) }' | \ sort -u | \ xargs -r dpkg-query --search | \ @@ -59,21 +75,22 @@ RUN set -eux; \ sort -u >/usr/local/${APP_NAME}/runDeps; -# 镜像生成 ======================================================================== +# 1. 生成镜像 ===================================================================== FROM ${registry_url}/colovu/debian:10 FROM ${registry_url}/colovu/openjre:8 -# 设置 apt-get 源:default / tencent / ustc / aliyun / huawei -ARG apt_source=aliyun +# 声明需要使用的全局可变参数 +ARG app_name +ARG app_version +ARG registry_url +ARG apt_source +ARG local_url -# 编译镜像时指定用于加速的本地服务器地址 -ARG local_url="" - -# 镜像所包含应用的基础信息 -ENV APP_NAME=test \ +# 镜像所包含应用的基础信息,定义环境变量,供后续脚本使用 +ENV APP_NAME=${app_name} \ APP_USER=builder \ APP_EXEC=run.sh \ - APP_VERSION=1.0.0 + APP_VERSION=${app_version} ENV APP_HOME_DIR=/usr/local/${APP_NAME} \ APP_DEF_DIR=/etc/${APP_NAME} @@ -82,9 +99,9 @@ ENV PATH="${APP_HOME_DIR}/bin:${APP_HOME_DIR}/sbin:${PATH}" \ LD_LIBRARY_PATH="${APP_HOME_DIR}/lib" LABEL \ - "Version"="v${APP_VERSION}" \ - "Description"="Docker image for ${APP_NAME}(v${APP_VERSION})." \ - "Dockerfile"="https://github.com/colovu/docker-${APP_NAME}" \ + "Version"="v${app_version}" \ + "Description"="Docker image for ${app_name}(v${app_version})." \ + "Dockerfile"="https://github.com/colovu/docker-${app_name}" \ "Vendor"="Endial Fang (endial@126.com)" # 拷贝应用使用的客制化脚本,并创建对应的用户及数据存储目录 @@ -115,6 +132,15 @@ VOLUME ["/srv/conf", "/srv/data", "/srv/datalog", "/srv/cert", "/var/log"] # 默认使用gosu切换为新建用户启动,必须保证端口在1024之上 EXPOSE 8080 +# 关闭基础镜像的健康检查 +#HEALTHCHECK NONE + +# 应用健康状态检查 +#HEALTHCHECK --interval=30 --timeout=30 --retries=3 \ +# CMD curl -fs http://localhost:9864/ || exit 1 +#HEALTHCHECK --interval=0 --timeout=0 --retries=0 \ +# CMD netstat -ltun | grep 10514 + # 容器初始化命令,默认存放在:/usr/local/bin/entry.sh ENTRYPOINT ["entry.sh"]