This commit is contained in:
parent
8f9bed48ca
commit
a89b4540f4
|
|
@ -0,0 +1,54 @@
|
||||||
|
#!/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 --rm \
|
||||||
|
-p "${HOST_PORT}:${HOST_PORT}" \
|
||||||
|
-v "$(pwd)/config":/app/config \
|
||||||
|
--name "$CONTAINER_NAME" \
|
||||||
|
"$IMAGE_NAME"
|
||||||
Loading…
Reference in New Issue