docker/nginx/build_image.sh

71 lines
1.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 加载环境变量
source ../environment.sh
# 设置Nginx镜像名称如果环境变量中未定义
if [ -z "${NGINX_IMAGE}" ]; then
export NGINX_IMAGE="${REGISTRY_HOST}nginx:${DOMAIN}"
fi
echo "开始构建Nginx镜像: ${NGINX_IMAGE}"
# 检查临时目录是否存在
TEMP_DIR="temp_vhosts"
if [ ! -d "$TEMP_DIR" ]; then
echo "错误: $TEMP_DIR 目录不存在! 请先运行 replace_vars.sh 脚本"
exit 1
fi
# 检查临时目录中是否有配置文件
if [ -z "$(ls -A $TEMP_DIR)" ]; then
echo "警告: $TEMP_DIR 目录为空,将使用空配置构建镜像"
fi
# 修改Dockerfile以使用临时目录
cat > Dockerfile.nginx.temp << EOF
FROM nginx:latest
# 删除默认的nginx配置
RUN rm -rf /etc/nginx/conf.d/*
# 复制处理后的vhosts配置到nginx配置目录
COPY ${TEMP_DIR}/ /etc/nginx/conf.d/
# 设置时区
ENV TZ=Asia/Shanghai
# 暴露端口
EXPOSE 80 443
# 启动nginx
CMD ["nginx", "-g", "daemon off;"]
EOF
# 构建Docker镜像
docker build -t ${NGINX_IMAGE} -f Dockerfile.nginx.temp .
# 检查构建结果
if [ $? -eq 0 ]; then
echo "Nginx镜像构建成功: ${NGINX_IMAGE}"
# 推送到镜像仓库(如果需要)
echo "推送镜像到仓库: ${NGINX_IMAGE}"
docker push ${NGINX_IMAGE}
if [ $? -eq 0 ]; then
echo "镜像推送成功!"
else
echo "警告: 镜像推送失败!"
fi
else
echo "错误: Nginx镜像构建失败!"
exit 1
fi
# 清理临时文件
rm -f Dockerfile.nginx.temp
# 注意:不删除临时目录,以便用户可以继续检查替换结果
# 如果需要清理,可以手动运行: rm -rf $TEMP_DIR
echo "Nginx镜像构建和推送完成!"