基础镜像重构之NodeJs14编译镜像
构建工具选型(来自章节d008)
kenaito-nodejs:14.21.3
镜像大小:451.56MB 构建耗时:16.5s(不包括下载环境包的时间)
shell
# 下载环境
if [ ! -f "node-v14.21.3-linux-x64.tar.gz" ];then
curl -O https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.gz
fi
if [ $? -ne 0 ]; then
echo "下载 node-v14.21.3-linux-x64.tar.gz 文件失败"
exit 1
fi
# 释放文件,优化大小
rm -rf build
mkdir build
tar -xvf node-v14.21.3-linux-x64.tar.gz
if [ $? -ne 0 ]; then
echo "初始化失败"
exit 1
fi
mv node-v14.21.3-linux-x64 build/nodejs
cd build && pwd
# 压缩成品
tar -czvf nodejs.tgz nodejs
rm -rf nodejs
# Dockerfile
cat > Dockerfile << 'EOF'
FROM alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
LABEL MAINTAINER="tianjun@odboy.cn"
ENV TimeZone="Asia/Shanghai"
ENV NPM_CONFIG_REGISTRY="https://registry.npmmirror.com"
ENV YARN_NPM_REGISTRY_SERVER="https://registry.npmmirror.com"
ENV NODE_HOME="/home/admin/nodejs"
ENV PATH="$PATH:${NODE_HOME}/bin"
WORKDIR /home/admin
ADD nodejs.tgz .
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone; \
sed -i 's/mirrors.cloud.aliyuncs.com/mirrors.aliyun.com/' /etc/yum.repos.d/*.repo; \
chmod +x /home/admin/nodejs/bin/*; \
npm config set registry https://registry.npmmirror.com;
CMD ["sleep","365d"]
EOF
# 构建镜像(docker可换成buildah)
docker build --no-cache -f Dockerfile -t kenaito-nodejs:14.21.3 .
if [ $? -ne 0 ]; then
echo "构建镜像失败"
exit 1
fi
# 运行测试
docker run kenaito-nodejs:14.21.3kenaito-nodejs:16.20.2
镜像大小:432.03MB 构建耗时:14.0s(不包括下载环境包的时间)
shell
# 下载环境
if [ ! -f "node-v16.20.2-linux-x64.tar.gz" ];then
curl -O https://nodejs.org/dist/latest-gallium/node-v16.20.2-linux-x64.tar.gz
fi
if [ $? -ne 0 ]; then
echo "下载 node-v16.20.2-linux-x64.tar.gz 文件失败"
exit 1
fi
# 释放文件,优化大小
rm -rf build
mkdir build
tar -xvf node-v16.20.2-linux-x64.tar.gz
if [ $? -ne 0 ]; then
echo "初始化失败"
exit 1
fi
mv node-v16.20.2-linux-x64 build/nodejs
cd build && pwd
# 压缩成品
tar -czvf nodejs.tgz nodejs
rm -rf nodejs
# Dockerfile
cat > Dockerfile << 'EOF'
FROM alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
LABEL MAINTAINER="tianjun@odboy.cn"
ENV TimeZone="Asia/Shanghai"
ENV NPM_CONFIG_REGISTRY="https://registry.npmmirror.com"
ENV YARN_NPM_REGISTRY_SERVER="https://registry.npmmirror.com"
ENV NODE_HOME="/home/admin/nodejs"
ENV PATH="$PATH:${NODE_HOME}/bin"
WORKDIR /home/admin
ADD nodejs.tgz .
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone; \
sed -i 's/mirrors.cloud.aliyuncs.com/mirrors.aliyun.com/' /etc/yum.repos.d/*.repo; \
chmod +x /home/admin/nodejs/bin/*; \
npm config set registry https://registry.npmmirror.com;
CMD ["sleep","365d"]
EOF
# 构建镜像(docker可换成buildah)
docker build --no-cache -f Dockerfile -t kenaito-nodejs:16.20.2 .
if [ $? -ne 0 ]; then
echo "构建镜像失败"
exit 1
fi
# 运行测试
docker run kenaito-nodejs:16.20.2kenaito-nodejs:18.20.8
镜像大小:510.79MB 构建耗时:20.0s(不包括下载环境包的时间)
shell
# 下载环境
if [ ! -f "node-v18.20.8-linux-x64.tar.gz" ];then
curl -O https://nodejs.org/dist/v18.20.8/node-v18.20.8-linux-x64.tar.gz
fi
if [ $? -ne 0 ]; then
echo "下载 node-v18.20.8-linux-x64.tar.gz 文件失败"
exit 1
fi
# 释放文件,优化大小
rm -rf build
mkdir build
tar -xvf node-v18.20.8-linux-x64.tar.gz
if [ $? -ne 0 ]; then
echo "初始化失败"
exit 1
fi
mv node-v18.20.8-linux-x64 build/nodejs
cd build && pwd
# 压缩成品
tar -czvf nodejs.tgz nodejs
rm -rf nodejs
# Dockerfile
cat > Dockerfile << 'EOF'
FROM alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
LABEL MAINTAINER="tianjun@odboy.cn"
ENV TimeZone="Asia/Shanghai"
ENV NPM_CONFIG_REGISTRY="https://registry.npmmirror.com"
ENV YARN_NPM_REGISTRY_SERVER="https://registry.npmmirror.com"
ENV NODE_HOME="/home/admin/nodejs"
ENV PATH="$PATH:${NODE_HOME}/bin"
WORKDIR /home/admin
ADD nodejs.tgz .
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone; \
sed -i 's/mirrors.cloud.aliyuncs.com/mirrors.aliyun.com/' /etc/yum.repos.d/*.repo; \
chmod +x /home/admin/nodejs/bin/*; \
npm config set registry https://registry.npmmirror.com;
CMD ["sleep","365d"]
EOF
# 构建镜像(docker可换成buildah)
docker build --no-cache -f Dockerfile -t kenaito-nodejs:18.20.8 .
if [ $? -ne 0 ]; then
echo "构建镜像失败"
exit 1
fi
# 运行测试
docker run kenaito-nodejs:18.20.8kenaito-nodejs:20.0.0
镜像大小:518.07MB 构建耗时:19.6s(不包括下载环境包的时间)
shell
# 下载环境
if [ ! -f "node-v20.0.0-linux-x64.tar.gz" ];then
curl -O https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-x64.tar.gz
fi
if [ $? -ne 0 ]; then
echo "下载 node-v20.0.0-linux-x64.tar.gz 文件失败"
exit 1
fi
# 释放文件,优化大小
rm -rf build
mkdir build
tar -xvf node-v20.0.0-linux-x64.tar.gz
if [ $? -ne 0 ]; then
echo "初始化失败"
exit 1
fi
mv node-v20.0.0-linux-x64 build/nodejs
cd build && pwd
# 压缩成品
tar -czvf nodejs.tgz nodejs
rm -rf nodejs
# Dockerfile
cat > Dockerfile << 'EOF'
FROM alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/alinux3:latest
LABEL MAINTAINER="tianjun@odboy.cn"
ENV TimeZone="Asia/Shanghai"
ENV NPM_CONFIG_REGISTRY="https://registry.npmmirror.com"
ENV YARN_NPM_REGISTRY_SERVER="https://registry.npmmirror.com"
ENV NODE_HOME="/home/admin/nodejs"
ENV PATH="$PATH:${NODE_HOME}/bin"
WORKDIR /home/admin
ADD nodejs.tgz .
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone; \
sed -i 's/mirrors.cloud.aliyuncs.com/mirrors.aliyun.com/' /etc/yum.repos.d/*.repo; \
chmod +x /home/admin/nodejs/bin/*; \
npm config set registry https://registry.npmmirror.com;
CMD ["sleep","365d"]
EOF
# 构建镜像(docker可换成buildah)
docker build --no-cache -f Dockerfile -t kenaito-nodejs:20.0.0 .
if [ $? -ne 0 ]; then
echo "构建镜像失败"
exit 1
fi
# 运行测试
docker run kenaito-nodejs:20.0.0
