sntemail/build-and-run.sh

55 lines
1.5 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
set -euo pipefail
# ========== 可调参数 ==========
IMAGE_NAME="email-sender" # 镜像名
CONTAINER_NAME="email-sender" # 容器名
HOST_PORT=7880 # 宿主机端口Dockerfile 内也写了 7880
PROXY="http://127.0.0.1:7890" # 如不需要代理,留空 "" 即可
# ==============================
echo "📍 当前目录: $(pwd)"
# 1. 停止并删除旧容器
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
echo "🛑 停止旧容器:$CONTAINER_NAME"
docker stop "$CONTAINER_NAME" || true
echo "🧹 删除旧容器:$CONTAINER_NAME"
docker rm "$CONTAINER_NAME"
fi
# 2. 删除旧镜像
if docker images -a | awk '{print $1}' | grep -q "^${IMAGE_NAME}$"; then
echo "🗑️ 删除旧镜像:$IMAGE_NAME"
docker rmi -f "$IMAGE_NAME"
fi
# 3. Git 拉取最新代码(当前目录是 git 仓库)
if [ -d ".git" ]; then
echo "🔄 拉取最新源码"
git pull
else
echo "❌ 错误:当前目录不是 git 仓库"
exit 1
fi
# 4. 构建镜像
echo "🔧 开始构建镜像:$IMAGE_NAME"
if [ -n "$PROXY" ]; then
docker build \
--build-arg http_proxy="$PROXY" \
--build-arg https_proxy="$PROXY" \
--network=host \
-t "$IMAGE_NAME" .
else
docker build -t "$IMAGE_NAME" .
fi
# 5. 运行容器(挂载 config 目录,方便改 SMTP 配置)
echo "🚀 启动容器:$CONTAINER_NAME"
docker run -d \
-p "${HOST_PORT}:${HOST_PORT}" \
-v "$(pwd)/config":/app/config \
--name "$CONTAINER_NAME" \
"$IMAGE_NAME"