#!/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镜像构建和推送完成!"