[fix:8]针对aliyun容器服务器,修改默认仓库地址;修改默认源服务器为aliyun

This commit is contained in:
2020-12-15 09:31:01 +08:00
parent c196586973
commit b4d0c030fb
3 changed files with 97 additions and 63 deletions
+40 -24
View File
@@ -1,12 +1,17 @@
# Ver: 1.2 by Endial Fang (endial@126.com)
# Ver: 1.4 by Endial Fang (endial@126.com)
#
FROM colovu/dbuilder as builder
# 预处理 =========================================================================
ARG registry_url="registry.cn-shenzhen.aliyuncs.com"
FROM ${registry_url}/colovu/dbuilder as builder
# sources.list 可使用版本:default / tencent / ustc / aliyun / huawei
ARG apt_source=tencent
ARG apt_source=aliyun
# 编译镜像时指定用于加速的本地服务器地址
ARG local_url=""
# 下载并解压软件包
RUN set -eux; \
appVersion=8u262b10; \
appName=OpenJDK8U-jre_x64_linux_${appVersion}.tar.gz; \
@@ -18,29 +23,36 @@ RUN set -eux; \
download_pkg unpack ${appName} "${appUrls}" -g "${appKeys}";
# 镜像生成 ========================================================================
FROM colovu/debian:10
ARG apt_source=default
ARG local_url=""
FROM ${registry_url}/colovu/debian:10
ENV JAVA_VERSION=8u262-b10 \
JAVA_HOME=/usr/local/openjdk8
# sources.list 可使用版本:default / tencent / ustc / aliyun / huawei
ARG apt_source=aliyun
ENV JRE_HOME="${JAVA_HOME}/jre" \
CLASSPATH="${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib" \
LANG=zh_CN.UTF-8 \
PATH="${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin:${PATH}"
ENV APP_NAME=openjdk8 \
APP_VERSION=8u262-b10
# 纯 JRE 版本仅包含 JRE 相关资源
ENV JAVA_HOME=/usr/local/${APP_NAME} \
JRE_HOME=/usr/local/${APP_NAME}
ENV PATH="${JAVA_HOME}/bin:${PATH}" \
CLASSPATH=".:${JAVA_HOME}/lib" \
LANG=zh_CN.UTF-8
LABEL \
"Version"="v${JAVA_VERSION}" \
"Description"="Docker image for openJRE v${JAVA_VERSION}." \
"Version"="v${APP_VERSION}" \
"Description"="Docker image for openJRE v${APP_VERSION}." \
"Dockerfile"="https://github.com/colovu/docker-openjre" \
"Vendor"="Endial Fang (endial@126.com)"
RUN select_source ${apt_source}
RUN install_pkg p11-kit ca-certificates dmidecode
# 从预处理过程中拷贝软件包(Optional),可以使用阶段编号或阶段命名定义来源
COPY --from=builder /usr/local/openjdk-8u262-b10-jre ${JAVA_HOME}
RUN mkdir -p ${JAVA_HOME}
COPY --from=builder /usr/local/openjdk-8u262-b10-jre/ ${JAVA_HOME}
# 选择软件包源(Optional),以加速后续软件包安装
RUN select_source ${apt_source}
# 安装依赖的软件包及库(Optional)
RUN install_pkg p11-kit ca-certificates dmidecode
# 更新 OpenJDK 绑定的证书
# 8-jdk uses "${JAVA_HOME}/jre/lib/security/cacerts" and
@@ -61,11 +73,15 @@ RUN set -eux; \
ldconfig; \
\
# 解决应用安装jre-headless时错误:update-alternatives: error: error creating symbolic link '/usr/share/man/man
mkdir -p /usr/share/man/man1; \
\
# 验证安装的软件是否可以正常运行,常规情况下放置在命令行的最后
java -version;
mkdir -p /usr/share/man/man1;
WORKDIR /
# 执行预处理脚本,并验证安装的软件包
RUN set -eux; \
override_file="/usr/local/overrides/overrides-${APP_VERSION}.sh"; \
[ -e "${override_file}" ] && /bin/bash "${override_file}"; \
java -version; \
gosu --version;
# 应用程序的服务命令,必须使用非守护进程方式运行。如果使用变量,则该变量必须在运行环境中存在(ENV可以获取)
CMD []
CMD []
+14 -12
View File
@@ -1,15 +1,16 @@
# Ver: 1.4 by Endial Fang (endial@126.com)
# Ver: 1.7 by Endial Fang (endial@126.com)
#
# 当前 Docker 镜像的编译脚本
registry_url :=registry.cn-shenzhen.aliyuncs.com
app_name :=colovu/openjre
# 生成镜像TAG,类似:
# <镜像名>:<分支名>-<Git ID> # Git 仓库且无文件修改直接编译
# <镜像名>:<分支名>-<Git ID> # Git 仓库且无文件修改直接编译
# <镜像名>:<分支名>-<年月日>-<时分秒> # Git 仓库有文件修改后的编译
# <镜像名>:latest-<年月日>-<时分秒> # 非 Git 仓库编译
current_subversion:=$(shell if [ ! `git status >/dev/null 2>&1` ]; then git rev-parse --short HEAD; else date +%y%m%d-%H%M%S; fi)
current_tag:=$(shell if [ ! `git status >/dev/null 2>&1` ]; then git rev-parse --abbrev-ref HEAD | sed -e 's/master/latest/'; else echo "latest"; fi)-$(current_subversion)
current_tag:=local-$(shell if [ ! `git status >/dev/null 2>&1` ]; then git rev-parse --abbrev-ref HEAD | sed -e 's/master/latest/'; else echo "latest"; fi)-$(current_subversion)
# Sources List: default / tencent / ustc / aliyun / huawei
build-arg:=--build-arg apt_source=tencent
@@ -26,27 +27,28 @@ build: build-alpine build-debian
build-debian:
@echo "Build $(app_name):$(current_tag)"
@docker build --force-rm $(build-arg) -t $(app_name):$(current_tag) .
@echo "Add tag: $(app_name):latest"
@docker tag $(app_name):$(current_tag) $(app_name):latest
@echo "Add tag: $(app_name):local-latest"
@docker tag $(app_name):$(current_tag) $(app_name):local-latest
build-alpine:
@echo "Build $(app_name):$(current_tag)-alpine"
@docker build --force-rm $(build-arg) -t $(app_name):$(current_tag)-alpine ./alpine
@echo "Add tag: $(app_name):latest-alpine"
@docker tag $(app_name):$(current_tag)-alpine $(app_name):latest-alpine
@echo "Add tag: $(app_name):local-latest-alpine"
@docker tag $(app_name):$(current_tag)-alpine $(app_name):local-latest-alpine
# 清理悬空的镜像(无TAG)及停止的容器
clean:
clearclean: clean
@echo "Clean untaged images and stoped containers..."
@docker ps -a | grep "Exited" | awk '{print $$1}' | xargs docker rm
@docker images | grep '<none>' | awk '{print $$3}' | xargs docker rmi -f
@docker ps -a | grep "Exited" | awk '{print $$1}' | sort -u | xargs -L 1 docker rm
@docker images | grep '<none>' | awk '{print $$3}' | sort -u | xargs -L 1 docker rmi -f
# 为了防止删除前缀名相同的镜像,在过滤条件中加入一个空格进行过滤
clearclean: clean
clean:
@echo "Clean all images for current application..."
@docker images | grep "$(app_name) " | awk '{print $$3}' | xargs docker rmi -f
@docker images | grep "$(app_name) " | awk '{print $$3}' | sort -u | xargs -L 1 docker rmi -f
# 更新所有 colovu 仓库的镜像
upgrade:
@echo "Upgrade all images..."
@docker images | grep 'colovu' | grep -v '<none>' | grep -v "latest-" | awk '{print $$1":"$$2}' | sort -u | xargs -L 1 docker pull
+43 -27
View File
@@ -1,12 +1,17 @@
# Ver: 1.2 by Endial Fang (endial@126.com)
# Ver: 1.4 by Endial Fang (endial@126.com)
#
FROM colovu/abuilder as builder
# 预处理 =========================================================================
ARG registry_url="registry.cn-shenzhen.aliyuncs.com"
FROM ${registry_url}/colovu/abuilder as builder
# sources.list 可使用版本:default / tencent / ustc / aliyun / huawei
ARG apt_source=tencent
ARG apt_source=aliyun
# 编译镜像时指定用于加速的本地服务器地址
ARG local_url=""
# 下载并解压软件包
RUN set -eux; \
appVersion=8u262b10; \
appName=OpenJDK8U-jre_x64_linux_${appVersion}.tar.gz; \
@@ -18,33 +23,40 @@ RUN set -eux; \
download_pkg unpack ${appName} "${appUrls}" -g "${appKeys}";
# 镜像生成 ========================================================================
FROM colovu/alpine:3.12
ARG apt_source=default
ARG local_url=""
FROM ${registry_url}/colovu/alpine:3.12
ENV JAVA_VERSION=8u262-b10 \
JAVA_HOME=/usr/local/openjdk8
# sources.list 可使用版本:default / tencent / ustc / aliyun / huawei
ARG apt_source=aliyun
ENV JRE_HOME="${JAVA_HOME}/jre" \
CLASSPATH="${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib" \
LANG=C.UTF-8 \
PATH="${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin:${PATH}"
ENV APP_NAME=openjdk8 \
APP_VERSION=8u262-b10
# 纯 JRE 版本仅包含 JRE 相关资源
ENV JAVA_HOME=/usr/local/${APP_NAME} \
JRE_HOME=/usr/local/${APP_NAME}
ENV PATH="${JAVA_HOME}/bin:${PATH}" \
CLASSPATH=".:${JAVA_HOME}/lib" \
LANG=C.UTF-8
LABEL \
"Version"="v${JAVA_VERSION}" \
"Description"="Docker image for openJRE v${JAVA_VERSION}." \
"Version"="v${APP_VERSION}" \
"Description"="Docker image for openJRE v${APP_VERSION}." \
"Dockerfile"="https://github.com/colovu/docker-openjre" \
"Vendor"="Endial Fang (endial@126.com)"
RUN select_source ${apt_source}
RUN install_pkg p11-kit p11-kit-trust ca-certificates dmidecode
# 从预处理过程中拷贝软件包(Optional),可以使用阶段编号或阶段命名定义来源
COPY --from=builder /usr/local/openjdk-8u262-b10-jre ${JAVA_HOME}
RUN mkdir -p ${JAVA_HOME}
COPY --from=builder /usr/local/openjdk-8u262-b10-jre/ ${JAVA_HOME}
# 选择软件包源(Optional),以加速后续软件包安装
RUN select_source ${apt_source}
# 安装依赖的软件包及库(Optional)
RUN install_pkg p11-kit p11-kit-trust ca-certificates dmidecode
# 安装 Glibc
RUN set -eux; \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub; \
curl -sSL -o /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub; \
appVersion=2.32-r0; \
appName=glibc-${appVersion}.apk; \
[ -n ${local_url} ] && localURL=${local_url}/glibc; \
@@ -63,7 +75,7 @@ RUN set -eux; \
# 安装 Glibc-bin;系统自带的 ldconfig 存在 bug
RUN set -eux; \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub; \
curl -sSL -o /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub; \
appVersion=2.32-r0; \
appName=glibc-bin-${appVersion}.apk; \
[ -n ${local_url} ] && localURL=${local_url}/glibc; \
@@ -76,7 +88,7 @@ RUN set -eux; \
# 安装 Glibc-i18n;增加中文支持
RUN set -eux; \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub; \
curl -sSL -o /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub; \
appVersion=2.32-r0; \
appName=glibc-i18n-${appVersion}.apk; \
[ -n ${local_url} ] && localURL=${local_url}/glibc; \
@@ -109,11 +121,15 @@ RUN set -eux; \
/usr/glibc-compat/sbin/ldconfig; \
\
# 解决应用安装jre-headless时错误:update-alternatives: error: error creating symbolic link '/usr/share/man/man
mkdir -p /usr/share/man/man1; \
\
# 验证安装的软件是否可以正常运行,常规情况下放置在命令行的最后
java -version;
mkdir -p /usr/share/man/man1;
WORKDIR /
# 执行预处理脚本,并验证安装的软件包
RUN set -eux; \
override_file="/usr/local/overrides/overrides-${APP_VERSION}.sh"; \
[ -e "${override_file}" ] && /bin/bash "${override_file}"; \
java -version; \
gosu --version;
# 应用程序的服务命令,必须使用非守护进程方式运行。如果使用变量,则该变量必须在运行环境中存在(ENV可以获取)
CMD []
CMD []